-\r
/** @file\r
PI PEI master include file. This file should match the PI spec.\r
\r
\r
#include <Pi/PiMultiPhase.h>\r
\r
-//\r
-// Handles of EFI FV/FFS.\r
-// \r
+///\r
+/// Handles of EFI FV.\r
+/// \r
typedef VOID *EFI_PEI_FV_HANDLE;\r
+\r
+///\r
+/// Handles of EFI FFS\r
+/// \r
typedef VOID *EFI_PEI_FILE_HANDLE;\r
\r
-//\r
-// Declare forward referenced data structures\r
-//\r
+///\r
+/// Declare forward reference data structure for EFI_PEI_SERVICE\r
+/// \r
typedef struct _EFI_PEI_SERVICES EFI_PEI_SERVICES;\r
+\r
+///\r
+/// Declare forward reference data structure for EFI_PEI_NOTIFY_DESCRIPTOR\r
+/// \r
typedef struct _EFI_PEI_NOTIFY_DESCRIPTOR EFI_PEI_NOTIFY_DESCRIPTOR;\r
\r
\r
The PEI Dispatcher will invoke each PEIM one time. During this pass, the PEI \r
Dispatcher will pass control to the PEIM at the AddressOfEntryPoint in the PE Header. \r
\r
- @param FfsHeader Pointer to the FFS file header.\r
+ @param FileHandle Pointer to the FFS file header.\r
@param PeiServices Describes the list of possible PEI Services.\r
\r
@return Status code\r
@param Ppi Address of the PPI that was installed.\r
\r
@return Status code\r
- \r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEIM_NOTIFY_ENTRY_POINT) (\r
+(EFIAPI *EFI_PEIM_NOTIFY_ENTRY_POINT)(\r
IN EFI_PEI_SERVICES **PeiServices,\r
IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
IN VOID *Ppi\r
#define EFI_PEI_PPI_DESCRIPTOR_NOTIFY_TYPES 0x00000060\r
#define EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST 0x80000000\r
\r
+///\r
+/// The data structure through which a PEIM describes available services to the PEI Foundation.\r
+/// \r
typedef struct {\r
UINTN Flags;\r
EFI_GUID *Guid;\r
VOID *Ppi;\r
} EFI_PEI_PPI_DESCRIPTOR;\r
\r
+/// \r
+/// The data structure in a given PEIM that tells the PEI \r
+/// Foundation where to invoke the notification service.\r
+/// \r
struct _EFI_PEI_NOTIFY_DESCRIPTOR {\r
UINTN Flags;\r
EFI_GUID *Guid;\r
EFI_PEIM_NOTIFY_ENTRY_POINT Notify;\r
};\r
\r
-//\r
-// Describes request of the module to be loaded to \r
-// the permanent memory once it is available. Unlike most of the other HOBs, \r
-// this HOB is produced and consumed during the HOB producer phase.\r
-// \r
+///\r
+/// Describes request of the module to be loaded to \r
+/// the permanent memory once it is available. Unlike most of the other HOBs, \r
+/// this HOB is produced and consumed during the HOB producer phase.\r
+/// \r
typedef struct _EFI_HOB_LOAD_PEIM {\r
EFI_HOB_GENERIC_HEADER Header;\r
EFI_PEI_FILE_HANDLE FileHandle;\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PPI) (\r
+(EFIAPI *EFI_PEI_INSTALL_PPI)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_REINSTALL_PPI) (\r
+(EFIAPI *EFI_PEI_REINSTALL_PPI)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN CONST EFI_PEI_PPI_DESCRIPTOR *OldPpi,\r
IN CONST EFI_PEI_PPI_DESCRIPTOR *NewPpi\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_LOCATE_PPI) (\r
+(EFIAPI *EFI_PEI_LOCATE_PPI)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN CONST EFI_GUID *Guid,\r
IN UINTN Instance,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_NOTIFY_PPI) (\r
+(EFIAPI *EFI_PEI_NOTIFY_PPI)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_BOOT_MODE) (\r
+(EFIAPI *EFI_PEI_GET_BOOT_MODE)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
OUT EFI_BOOT_MODE *BootMode\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_SET_BOOT_MODE) (\r
+(EFIAPI *EFI_PEI_SET_BOOT_MODE)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN EFI_BOOT_MODE BootMode\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_HOB_LIST) (\r
+(EFIAPI *EFI_PEI_GET_HOB_LIST)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
OUT VOID **HobList\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_CREATE_HOB) (\r
+(EFIAPI *EFI_PEI_CREATE_HOB)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN UINT16 Type,\r
IN UINT16 Length,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) (\r
+(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN UINTN Instance,\r
OUT EFI_PEI_FV_HANDLE *VolumeHandle\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) (\r
+(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN EFI_FV_FILETYPE SearchType,\r
IN EFI_PEI_FV_HANDLE VolumeHandle,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) (\r
+(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN EFI_SECTION_TYPE SectionType,\r
IN EFI_PEI_FILE_HANDLE FileHandle,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) (\r
+(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN EFI_PHYSICAL_ADDRESS MemoryBegin,\r
IN UINT64 MemoryLength\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_PAGES) (\r
+(EFIAPI *EFI_PEI_ALLOCATE_PAGES)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN EFI_MEMORY_TYPE MemoryType,\r
IN UINTN Pages,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_POOL) (\r
+(EFIAPI *EFI_PEI_ALLOCATE_POOL)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN UINTN Size,\r
OUT VOID **Buffer\r
**/\r
typedef\r
VOID\r
-(EFIAPI *EFI_PEI_COPY_MEM) (\r
+(EFIAPI *EFI_PEI_COPY_MEM)(\r
IN VOID *Destination,\r
IN VOID *Source,\r
IN UINTN Length\r
**/\r
typedef\r
VOID\r
-(EFIAPI *EFI_PEI_SET_MEM) (\r
+(EFIAPI *EFI_PEI_SET_MEM)(\r
IN VOID *Buffer,\r
IN UINTN Size,\r
IN UINT8 Value\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_REPORT_STATUS_CODE) (\r
+(EFIAPI *EFI_PEI_REPORT_STATUS_CODE)(\r
IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN EFI_STATUS_CODE_TYPE Type,\r
IN EFI_STATUS_CODE_VALUE Value,\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_RESET_SYSTEM) (\r
+(EFIAPI *EFI_PEI_RESET_SYSTEM)(\r
IN CONST EFI_PEI_SERVICES **PeiServices\r
);\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_BY_NAME) (\r
+(EFIAPI *EFI_PEI_FFS_FIND_BY_NAME)(\r
IN CONST EFI_GUID *FileName,\r
IN CONST EFI_PEI_FV_HANDLE VolumeHandle,\r
OUT EFI_PEI_FILE_HANDLE *FileHandle\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_GET_FILE_INFO) (\r
+(EFIAPI *EFI_PEI_FFS_GET_FILE_INFO)(\r
IN CONST EFI_PEI_FILE_HANDLE FileHandle,\r
OUT EFI_FV_FILE_INFO *FileInfo\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) (\r
+(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO)(\r
IN EFI_PEI_FV_HANDLE VolumeHandle,\r
OUT EFI_FV_INFO *VolumeInfo\r
);\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) (\r
+(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW)(\r
IN EFI_PEI_FILE_HANDLE FileHandle\r
);\r
\r
#define PEI_SERVICES_SIGNATURE 0x5652455320494550ULL\r
#define PEI_SERVICES_REVISION ((PEI_SPECIFICATION_MAJOR_REVISION<<16) | (PEI_SPECIFICATION_MINOR_REVISION))\r
\r
+/// \r
+/// EFI_PEI_SERVICES is a collection of functions whose implementation is provided by the PEI\r
+/// Foundation. These services fall into various classes, including the following:\r
+/// - Managing the boot mode\r
+/// - Allocating both early and permanent memory\r
+/// - Supporting the Firmware File System (FFS)\r
+/// - Abstracting the PPI database abstraction\r
+/// - Creating Hand-Off Blocks (HOBs)\r
+///\r
struct _EFI_PEI_SERVICES {\r
EFI_TABLE_HEADER Hdr;\r
//\r
};\r
\r
\r
+///\r
+/// EFI_SEC_PEI_HAND_OFF structure hold information about\r
+/// PEI core's operating environment, such as the size of location of\r
+/// temporary RAM, the stack location and BFV location.\r
+/// \r
typedef struct _EFI_SEC_PEI_HAND_OFF {\r
//\r
// Size of the data structure.\r