/** @file | |
Copyright (c) 2022, Intel Corporation. All rights reserved.<BR> | |
SPDX-License-Identifier: BSD-2-Clause-Patent | |
**/ | |
#ifndef CPU_PAGE_TABLE_SUPPORT_H_ | |
#define CPU_PAGE_TABLE_SUPPORT_H_ | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <stdarg.h> | |
#include <stddef.h> | |
#include <setjmp.h> | |
#include <cmocka.h> | |
#include <time.h> | |
#include <Uefi.h> | |
#include <Library/BaseLib.h> | |
#include <Library/BaseMemoryLib.h> | |
#include <Library/DebugLib.h> | |
#include <Library/UnitTestLib.h> | |
#include <Library/CpuPageTableLib.h> | |
#include <Library/MemoryAllocationLib.h> | |
#include <Library/UnitTestHostBaseLib.h> | |
#include <Library/BaseCryptLib.h> | |
#include "../CpuPageTable.h" | |
#define UNIT_TEST_APP_NAME "Cpu Page Table Lib Unit Tests" | |
#define UNIT_TEST_APP_VERSION "1.0" | |
// | |
// Random Options | |
// | |
// | |
// Only test one-one mapping case | |
// | |
#define ONLY_ONE_ONE_MAPPING 0x00000001 | |
// | |
// Change page table without using function PageTableMap, and use the modified page table as input | |
// | |
#define MANUAL_CHANGE_PAGE_TABLE 0x00000002 | |
// | |
// Use pre-generated random number array to generate random number | |
// | |
#define USE_RANDOM_ARRAY 0x00000004 | |
typedef struct { | |
PAGING_MODE PagingMode; | |
UINTN TestCount; | |
UINTN TestRangeCount; | |
UINTN RandomOption; | |
} CPU_PAGE_TABLE_LIB_RANDOM_TEST_CONTEXT; | |
/** | |
Random Test | |
@param[in] Context [Optional] An optional parameter that enables: | |
1) test-case reuse with varied parameters and | |
2) test-case re-entry for Target tests that need a | |
reboot. This parameter is a VOID* and it is the | |
responsibility of the test author to ensure that the | |
contents are well understood by all test cases that may | |
consume it. | |
@retval UNIT_TEST_PASSED The Unit test has completed and the test | |
case was successful. | |
@retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed. | |
**/ | |
UNIT_TEST_STATUS | |
EFIAPI | |
TestCaseforRandomTest ( | |
IN UNIT_TEST_CONTEXT Context | |
); | |
/** | |
Init global data | |
@param[in] MemorySpace Memory space | |
**/ | |
VOID | |
InitGlobalData ( | |
UINTN MemorySpace | |
); | |
/** | |
Check if the Page table is valid | |
@param[in] PageTable The pointer to the page table. | |
@param[in] PagingMode The paging mode. | |
@retval UNIT_TEST_PASSED It is a valid Page Table | |
**/ | |
UNIT_TEST_STATUS | |
IsPageTableValid ( | |
IN UINTN PageTable, | |
IN PAGING_MODE PagingMode | |
); | |
/** | |
Get max physical adrress supported by specific page mode | |
@param[in] Mode The paging mode. | |
@retval max address. | |
**/ | |
UINT64 | |
GetMaxAddress ( | |
IN PAGING_MODE Mode | |
); | |
#endif |