TianoCore EDK2 master
|
#include <Base.h>
#include <PiPei.h>
#include <Pi/PiMultiPhase.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/DebugLib.h>
#include <Library/UnitTestLib.h>
#include <Library/PeiServicesTablePointerLib.h>
#include <Uefi.h>
Go to the source code of this file.
Data Structures | |
union | PEI_PPI_LIST_POINTERS |
struct | PEI_PPI_LIST |
struct | PEI_CALLBACK_NOTIFY_LIST |
struct | PEI_DISPATCH_NOTIFY_LIST |
struct | PEI_PPI_DATABASE |
struct | _PEI_CORE_INSTANCE |
Macros | |
#define | MAX_PPI_COUNT 100 |
#define | MAX_HOB_SIZE SIZE_32MB |
#define | PEI_CORE_INSTANCE_FROM_PS_THIS(a) &mPrivateData |
Typedefs | |
typedef struct _PEI_CORE_INSTANCE | PEI_CORE_INSTANCE |
Variables | |
PEI_CORE_INSTANCE | mPrivateData |
An internal header file for the Unit Test instance of the PEI services Table Pointer Library.
Copyright (c) 2023, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file UnitTestPeiServicesTablePointerLib.h.
#define MAX_HOB_SIZE SIZE_32MB |
Definition at line 23 of file UnitTestPeiServicesTablePointerLib.h.
#define MAX_PPI_COUNT 100 |
Definition at line 22 of file UnitTestPeiServicesTablePointerLib.h.
#define PEI_CORE_INSTANCE_FROM_PS_THIS | ( | a | ) | &mPrivateData |
Definition at line 96 of file UnitTestPeiServicesTablePointerLib.h.
typedef struct _PEI_CORE_INSTANCE PEI_CORE_INSTANCE |
Forward declaration for PEI_CORE_INSTANCE
Definition at line 28 of file UnitTestPeiServicesTablePointerLib.h.
VOID ProcessNotify | ( | IN PEI_CORE_INSTANCE * | PrivateData, |
IN UINTN | NotifyType, | ||
IN INTN | InstallStartIndex, | ||
IN INTN | InstallStopIndex, | ||
IN INTN | NotifyStartIndex, | ||
IN INTN | NotifyStopIndex | ||
) |
Process notifications.
PrivateData | PeiCore's private data structure |
NotifyType | Type of notify to fire. |
InstallStartIndex | Install Beginning index. |
InstallStopIndex | Install Ending index. |
NotifyStartIndex | Notify Beginning index. |
NotifyStopIndex | Notify Ending index. |
EFI_STATUS EFIAPI UnitTestAllocatePages | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN EFI_MEMORY_TYPE | MemoryType, | ||
IN UINTN | Pages, | ||
OUT EFI_PHYSICAL_ADDRESS * | Memory | ||
) |
The purpose of the service is to publish an interface that allows PEIMs to allocate memory ranges that are managed by the PEI Foundation.
Prior to InstallPeiMemory() being called, PEI will allocate pages from the heap. After InstallPeiMemory() is called, PEI will allocate pages within the region of memory provided by InstallPeiMemory() service in a best-effort fashion. Location-specific allocations are not managed by the PEI foundation code.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
MemoryType | The type of memory to allocate. |
Pages | The number of contiguous 4 KB pages to allocate. |
Memory | Pointer to a physical address. On output, the address is set to the base of the page range that was allocated. |
EFI_SUCCESS | The memory range was successfully allocated. |
EFI_OUT_OF_RESOURCES | The pages could not be allocated. |
EFI_INVALID_PARAMETER | Type is not equal to EfiLoaderCode, EfiLoaderData, EfiRuntimeServicesCode, EfiRuntimeServicesData, EfiBootServicesCode, EfiBootServicesData, EfiACPIReclaimMemory, EfiReservedMemoryType, or EfiACPIMemoryNVS. |
Definition at line 179 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestAllocatePool | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN UINTN | Size, | ||
OUT VOID ** | Buffer | ||
) |
Pool allocation service. Before permanent memory is discovered, the pool will be allocated in the heap in temporary memory. Generally, the size of the heap in temporary memory does not exceed 64K, so the biggest pool size could be allocated is 64K.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
Size | Amount of memory required |
Buffer | Address of pointer to the buffer |
EFI_SUCCESS | The allocation was successful |
EFI_OUT_OF_RESOURCES | There is not enough heap to satisfy the requirement to allocate the requested size. |
Definition at line 207 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS UnitTestCoreBuildHobHandoffInfoTable | ( | IN EFI_BOOT_MODE | BootMode, |
IN EFI_PHYSICAL_ADDRESS | MemoryBegin, | ||
IN UINT64 | MemoryLength | ||
) |
Builds a Handoff Information Table HOB
BootMode | - Current Bootmode |
MemoryBegin | - Start Memory Address. |
MemoryLength | - Length of Memory. |
Definition at line 126 of file UnitTestPeiServicesTablePointerLibHob.c.
EFI_STATUS EFIAPI UnitTestCreateHob | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN UINT16 | Type, | ||
IN UINT16 | Length, | ||
IN OUT VOID ** | Hob | ||
) |
Add a new HOB to the HOB List.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
Type | Type of the new HOB. |
Length | Length of the new HOB to allocate. |
Hob | Pointer to the new HOB. |
EFI_INVALID_PARAMETER | if Hob is NULL |
EFI_NOT_AVAILABLE_YET | if HobList is still not available. |
EFI_OUT_OF_RESOURCES | if there is no more memory to grow the Hoblist. |
Definition at line 59 of file UnitTestPeiServicesTablePointerLibHob.c.
EFI_STATUS EFIAPI UnitTestFfsFindFileByName | ( | IN CONST EFI_GUID * | FileName, |
IN EFI_PEI_FV_HANDLE | VolumeHandle, | ||
OUT EFI_PEI_FILE_HANDLE * | FileHandle | ||
) |
Find a file within a volume by its name.
FileName | A pointer to the name of the file to find within the firmware volume. |
VolumeHandle | The firmware volume to search |
FileHandle | Upon exit, points to the found file's handle or NULL if it could not be found. |
EFI_SUCCESS | File was found. |
EFI_NOT_FOUND | File was not found. |
EFI_INVALID_PARAMETER | VolumeHandle or FileHandle or FileName was NULL. |
Definition at line 282 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestFfsFindNextFile | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN UINT8 | SearchType, | ||
IN EFI_PEI_FV_HANDLE | FvHandle, | ||
IN OUT EFI_PEI_FILE_HANDLE * | FileHandle | ||
) |
Searches for the next matching file in the firmware volume.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
SearchType | Filter to find only files of this type. Type EFI_FV_FILETYPE_ALL causes no filtering to be done. |
FvHandle | Handle of firmware volume in which to search. |
FileHandle | On entry, points to the current handle from which to begin searching or NULL to start at the beginning of the firmware volume. On exit, points the file handle of the next file in the volume or NULL if there are no more files. |
EFI_NOT_FOUND | The file was not found. |
EFI_NOT_FOUND | The header checksum was not zero. |
EFI_SUCCESS | The file was found. |
Definition at line 93 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestFfsFindNextVolume | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN UINTN | Instance, | ||
IN OUT EFI_PEI_FV_HANDLE * | VolumeHandle | ||
) |
Search the firmware volumes by index
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation |
Instance | This instance of the firmware volume to find. The value 0 is the Boot Firmware Volume (BFV). |
VolumeHandle | On exit, points to the next volume handle or NULL if it does not exist. |
EFI_INVALID_PARAMETER | VolumeHandle is NULL |
EFI_NOT_FOUND | The volume was not found. |
EFI_SUCCESS | The volume was found. |
Definition at line 66 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestFfsFindSectionData | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN EFI_SECTION_TYPE | SectionType, | ||
IN EFI_PEI_FILE_HANDLE | FileHandle, | ||
OUT VOID ** | SectionData | ||
) |
Searches for the next matching section within the specified file.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation |
SectionType | Filter to find only sections of this type. |
FileHandle | Pointer to the current file to search. |
SectionData | A pointer to the discovered section, if successful. NULL if section not found |
EFI_NOT_FOUND | The section was not found. |
EFI_SUCCESS | The section was found. |
Definition at line 118 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestFfsFindSectionData3 | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN EFI_SECTION_TYPE | SectionType, | ||
IN UINTN | SectionInstance, | ||
IN EFI_PEI_FILE_HANDLE | FileHandle, | ||
OUT VOID ** | SectionData, | ||
OUT UINT32 * | AuthenticationStatus | ||
) |
Searches for the next matching section within the specified file.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
SectionType | The value of the section type to find. |
SectionInstance | Section instance to find. |
FileHandle | Handle of the firmware file to search. |
SectionData | A pointer to the discovered section, if successful. |
AuthenticationStatus | A pointer to the authentication status for this section. |
EFI_SUCCESS | The section was found. |
EFI_NOT_FOUND | The section was not found. |
Definition at line 375 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestFfsGetFileInfo | ( | IN EFI_PEI_FILE_HANDLE | FileHandle, |
OUT EFI_FV_FILE_INFO * | FileInfo | ||
) |
Returns information about a specific file.
FileHandle | Handle of the file. |
FileInfo | Upon exit, points to the file's information. |
EFI_INVALID_PARAMETER | If FileInfo is NULL. |
EFI_INVALID_PARAMETER | If FileHandle does not represent a valid file. |
EFI_SUCCESS | File information returned. |
Definition at line 304 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestFfsGetFileInfo2 | ( | IN EFI_PEI_FILE_HANDLE | FileHandle, |
OUT EFI_FV_FILE_INFO2 * | FileInfo | ||
) |
Returns information about a specific file.
FileHandle | Handle of the file. |
FileInfo | Upon exit, points to the file's information. |
EFI_INVALID_PARAMETER | If FileInfo is NULL. |
EFI_INVALID_PARAMETER | If FileHandle does not represent a valid file. |
EFI_SUCCESS | File information returned. |
Definition at line 400 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestFfsGetVolumeInfo | ( | IN EFI_PEI_FV_HANDLE | VolumeHandle, |
OUT EFI_FV_INFO * | VolumeInfo | ||
) |
Returns information about the specified volume.
This function returns information about a specific firmware volume, including its name, type, attributes, starting address and size.
VolumeHandle | Handle of the volume. |
VolumeInfo | Upon exit, points to the volume's information. |
EFI_SUCCESS | Volume information returned. |
EFI_INVALID_PARAMETER | If VolumeHandle does not represent a valid volume. |
EFI_INVALID_PARAMETER | If VolumeHandle is NULL. |
EFI_SUCCESS | Information successfully returned. |
EFI_INVALID_PARAMETER | The volume designated by the VolumeHandle is not available. |
Definition at line 331 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestFreePages | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN EFI_PHYSICAL_ADDRESS | Memory, | ||
IN UINTN | Pages | ||
) |
Frees memory pages.
[in] | PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
[in] | Memory | The base physical address of the pages to be freed. |
[in] | Pages | The number of contiguous 4 KB pages to free. |
EFI_SUCCESS | The requested pages were freed. |
EFI_INVALID_PARAMETER | Memory is not a page-aligned address or Pages is invalid. |
EFI_NOT_FOUND | The requested memory pages were not allocated with AllocatePages(). |
Definition at line 423 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestGetBootMode | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN OUT EFI_BOOT_MODE * | BootMode | ||
) |
This service enables PEIMs to ascertain the present value of the boot mode.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
BootMode | A pointer to contain the value of the boot mode. |
EFI_SUCCESS | The boot mode was returned successfully. |
EFI_INVALID_PARAMETER | BootMode is NULL. |
Definition at line 23 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestGetHobList | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN OUT VOID ** | HobList | ||
) |
Gets the pointer to the HOB List.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
HobList | Pointer to the HOB List. |
EFI_SUCCESS | Get the pointer of HOB List |
EFI_NOT_AVAILABLE_YET | the HOB List is not yet published |
EFI_INVALID_PARAMETER | HobList is NULL (in debug mode) |
Definition at line 25 of file UnitTestPeiServicesTablePointerLibHob.c.
EFI_STATUS EFIAPI UnitTestInstallPeiMemory | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN EFI_PHYSICAL_ADDRESS | MemoryBegin, | ||
IN UINT64 | MemoryLength | ||
) |
This function registers the found memory configuration with the PEI Foundation.
The usage model is that the PEIM that discovers the permanent memory shall invoke this service. This routine will hold discoveried memory information into PeiCore's private data, and set SwitchStackSignal flag. After PEIM who discovery memory is dispatched, PeiDispatcher will migrate temporary memory to permanent memory.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
MemoryBegin | Start of memory address. |
MemoryLength | Length of memory. |
Definition at line 146 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestInstallPpi | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN CONST EFI_PEI_PPI_DESCRIPTOR * | PpiList | ||
) |
This function installs an interface in the PEI PPI database by GUID. The purpose of the service is to publish an interface that other parties can use to call additional PEIMs.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
PpiList | Pointer to a list of PEI PPI Descriptors. |
EFI_SUCCESS | if all PPIs in PpiList are successfully installed. |
EFI_INVALID_PARAMETER | if PpiList is NULL pointer if any PPI in PpiList is not valid |
EFI_OUT_OF_RESOURCES | if there is no more memory resource to install PPI |
Definition at line 133 of file UnitTestPeiServicesTablePointerLibPpi.c.
EFI_STATUS EFIAPI UnitTestLocatePpi | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN CONST EFI_GUID * | Guid, | ||
IN UINTN | Instance, | ||
IN OUT EFI_PEI_PPI_DESCRIPTOR ** | PpiDescriptor, | ||
IN OUT VOID ** | Ppi | ||
) |
Locate a given named PPI.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
Guid | Pointer to GUID of the PPI. |
Instance | Instance Number to discover. |
PpiDescriptor | Pointer to reference the found descriptor. If not NULL, returns a pointer to the descriptor (includes flags, etc) |
Ppi | Pointer to reference the found PPI |
EFI_SUCCESS | if the PPI is in the database |
EFI_NOT_FOUND | if the PPI is not in the database |
Definition at line 232 of file UnitTestPeiServicesTablePointerLibPpi.c.
EFI_STATUS EFIAPI UnitTestNotifyPpi | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN CONST EFI_PEI_NOTIFY_DESCRIPTOR * | NotifyList | ||
) |
This function installs a notification service to be called back when a given interface is installed or reinstalled. The purpose of the service is to publish an interface that other parties can use to call additional PPIs that may materialize later.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
NotifyList | Pointer to list of Descriptors to notify upon. |
EFI_SUCCESS | if successful |
EFI_OUT_OF_RESOURCES | if no space in the database |
EFI_INVALID_PARAMETER | if not a good descriptor |
Definition at line 414 of file UnitTestPeiServicesTablePointerLibPpi.c.
EFI_STATUS EFIAPI UnitTestRegisterForShadow | ( | IN EFI_PEI_FILE_HANDLE | FileHandle | ) |
This routine enables a PEIM to register itself for shadow when the PEI Foundation discovers permanent memory.
FileHandle | File handle of a PEIM. |
EFI_NOT_FOUND | The file handle doesn't point to PEIM itself. |
EFI_ALREADY_STARTED | Indicate that the PEIM has been registered itself. |
EFI_SUCCESS | Successfully to register itself. |
Definition at line 352 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestReInstallPpi | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN CONST EFI_PEI_PPI_DESCRIPTOR * | OldPpi, | ||
IN CONST EFI_PEI_PPI_DESCRIPTOR * | NewPpi | ||
) |
This function reinstalls an interface in the PEI PPI database by GUID. The purpose of the service is to publish an interface that other parties can use to replace an interface of the same name in the protocol database with a different interface.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
OldPpi | Pointer to the old PEI PPI Descriptors. |
NewPpi | Pointer to the new PEI PPI Descriptors. |
EFI_SUCCESS | if the operation was successful |
EFI_INVALID_PARAMETER | if OldPpi or NewPpi is NULL |
EFI_INVALID_PARAMETER | if NewPpi is not valid |
EFI_NOT_FOUND | if the PPI was not in the database |
Definition at line 160 of file UnitTestPeiServicesTablePointerLibPpi.c.
EFI_STATUS EFIAPI UnitTestReportStatusCode | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN EFI_STATUS_CODE_TYPE | CodeType, | ||
IN EFI_STATUS_CODE_VALUE | Value, | ||
IN UINT32 | Instance, | ||
IN CONST EFI_GUID * | CallerId, | ||
IN CONST EFI_STATUS_CODE_DATA *Data | OPTIONAL | ||
) |
Core version of the Status Code reporter
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
CodeType | Type of Status Code. |
Value | Value to output for Status Code. |
Instance | Instance Number of this status code. |
CallerId | ID of the caller of this status code. |
Data | Optional data associated with this status code. |
EFI_SUCCESS | if status code is successfully reported |
EFI_NOT_AVAILABLE_YET | if StatusCodePpi has not been installed |
Definition at line 234 of file UnitTestPeiServicesTablePointerLibMisc.c.
EFI_STATUS EFIAPI UnitTestResetSystem | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices | ) |
Core version of the Reset System
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
EFI_NOT_AVAILABLE_YET | PPI not available yet. |
EFI_DEVICE_ERROR | Did not reset system. Otherwise, resets the system. |
Definition at line 260 of file UnitTestPeiServicesTablePointerLibMisc.c.
VOID EFIAPI UnitTestResetSystem2 | ( | IN EFI_RESET_TYPE | ResetType, |
IN EFI_STATUS | ResetStatus, | ||
IN UINTN | DataSize, | ||
IN VOID *ResetData | OPTIONAL | ||
) |
Resets the entire platform.
[in] | ResetType | The type of reset to perform. |
[in] | ResetStatus | The status code for the reset. |
[in] | DataSize | The size, in bytes, of ResetData. |
[in] | ResetData | For a ResetType of EfiResetCold, EfiResetWarm, or EfiResetShutdown the data buffer starts with a Null-terminated string, optionally followed by additional binary data. The string is a description that the caller may use to further indicate the reason for the system reset. |
Definition at line 98 of file UnitTestPeiServicesTablePointerLib.c.
EFI_STATUS EFIAPI UnitTestSetBootMode | ( | IN CONST EFI_PEI_SERVICES ** | PeiServices, |
IN EFI_BOOT_MODE | BootMode | ||
) |
This service enables PEIMs to update the boot mode variable.
PeiServices | An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation. |
BootMode | The value of the boot mode to set. |
Definition at line 43 of file UnitTestPeiServicesTablePointerLibMisc.c.
|
extern |
Definition at line 12 of file FatLiteApi.c.