summaryrefslogtreecommitdiffstats
path: root/UefiCpuPkg/Library/CpuPageTableLib/UnitTest/RandomTest.h
blob: cdc81e0af34cad9fa1fe5bf829119802b40a56fe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/** @file
  Internal header for Random test.

  Copyright (c) 2022, Intel Corporation. All rights reserved.<BR>
  SPDX-License-Identifier: BSD-2-Clause-Patent

**/

#ifndef RANDOM_TEST_H_
#define RANDOM_TEST_H_

#include "CpuPageTableLibUnitTest.h"

typedef struct _ALLOCATE_PAGE_RECORDS ALLOCATE_PAGE_RECORDS;

typedef
VOID *
(EFIAPI *ALLOCATE_PAGES)(
  IN ALLOCATE_PAGE_RECORDS  *PagesRecord,
  IN UINTN                  Pages
  );

typedef struct {
  VOID     *Buffer;
  UINTN    Pages;
} ALLOCATE_PAGE_RECORD;

struct _ALLOCATE_PAGE_RECORDS {
  UINTN                   Count;
  UINTN                   MaxCount;
  ALLOCATE_PAGES          AllocatePagesForPageTable;
  ALLOCATE_PAGE_RECORD    Records[0];
};

typedef struct {
  UINT64                LinearAddress;
  UINT64                Length;
  IA32_MAP_ATTRIBUTE    Attribute;
  IA32_MAP_ATTRIBUTE    Mask;
} MAP_ENTRY;

typedef struct {
  UINTN        Count;
  UINTN        InitCount;
  UINTN        MaxCount;
  MAP_ENTRY    Maps[10];
} MAP_ENTRYS;

UINT64
GetEntryFromPageTable (
  IN     UINTN        PageTable,
  IN     PAGING_MODE  PagingMode,
  IN     UINT64       Address,
  OUT    UINTN        *Level
  );

#endif