-\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
+ @retval EFI_SUCCESS The PEI completed successfully.\r
+ @retval !EFI_SUCCESS There is error in PEIM.\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEIM_ENTRY_POINT)(\r
- IN EFI_PEI_FILE_HANDLE *FfsHeader,\r
- IN EFI_PEI_SERVICES **PeiServices\r
+(EFIAPI *EFI_PEIM_ENTRY_POINT2)(\r
+ IN EFI_PEI_FILE_HANDLE FileHandle,\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
);\r
\r
/**\r
@param NotifyDescriptor Address of the notification descriptor data structure.\r
@param Ppi Address of the PPI that was installed.\r
\r
- @return Status code\r
- \r
+ @return Status of the notification.\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
- EFI_PEIM_ENTRY_POINT EntryPoint;\r
- EFI_PEIM_ENTRY_POINT InMemEntryPoint;\r
+ EFI_PEIM_ENTRY_POINT2 EntryPoint;\r
+ EFI_PEIM_ENTRY_POINT2 InMemEntryPoint;\r
} EFI_HOB_LOAD_PEIM;\r
\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_PPI_DESCRIPTOR *PpiList\r
+(EFIAPI *EFI_PEI_INSTALL_PPI)(\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_REINSTALL_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_PPI_DESCRIPTOR *OldPpi,\r
- IN EFI_PEI_PPI_DESCRIPTOR *NewPpi\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
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_LOCATE_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_GUID *Guid,\r
- IN UINTN Instance,\r
- IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,\r
- IN OUT VOID **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
+ IN OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor OPTIONAL,\r
+ IN OUT VOID **Ppi\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_NOTIFY_PPI) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList\r
+(EFIAPI *EFI_PEI_NOTIFY_PPI)(\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ IN CONST EFI_PEI_NOTIFY_DESCRIPTOR *NotifyList\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_BOOT_MODE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- OUT EFI_BOOT_MODE *BootMode\r
+(EFIAPI *EFI_PEI_GET_BOOT_MODE)(\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ OUT EFI_BOOT_MODE *BootMode\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_SET_BOOT_MODE) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_BOOT_MODE BootMode\r
+(EFIAPI *EFI_PEI_SET_BOOT_MODE)(\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_BOOT_MODE BootMode\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_GET_HOB_LIST) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN OUT VOID **HobList\r
+(EFIAPI *EFI_PEI_GET_HOB_LIST)(\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ OUT VOID **HobList\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_CREATE_HOB) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN UINT16 Type,\r
- IN UINT16 Length,\r
- IN OUT VOID **Hob\r
+(EFIAPI *EFI_PEI_CREATE_HOB)(\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
+ IN UINT16 Type,\r
+ IN UINT16 Length,\r
+ OUT VOID **Hob\r
);\r
\r
/**\r
\r
@param PeiServices An indirect pointer to the EFI_PEI_SERVICES table published by the PEI Foundation.\r
@param Instance This instance of the firmware volume to find. The value 0 is the Boot Firmware Volume (BFV).\r
- @param FwVolHeader Pointer to the firmware volume header of the volume to return.\r
+ @param VolumeHandle On exit, points to the next volumn handle or NULL if it does not exist.\r
\r
@retval EFI_SUCCESS The volume was found.\r
@retval EFI_NOT_FOUND The volume was not found.\r
- @retval EFI_INVALID_PARAMETER FwVolHeader is NULL\r
+ @retval EFI_INVALID_PARAMETER VolHandle is NULL\r
\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_VOLUME2) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN UINTN Instance,\r
- IN OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader\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
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_NEXT_FILE2) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_FV_FILETYPE SearchType,\r
- IN EFI_FIRMWARE_VOLUME_HEADER *FwVolHeader,\r
- IN OUT EFI_FFS_FILE_HEADER **FileHeader\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
+ IN OUT EFI_PEI_FILE_HANDLE *FileHandle\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_FIND_SECTION_DATA2) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_SECTION_TYPE SectionType,\r
- IN EFI_FFS_FILE_HEADER *FfsFileHeader,\r
- IN OUT VOID **SectionData\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
+ IN OUT VOID **SectionData\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_INSTALL_PEI_MEMORY) (\r
- IN EFI_PEI_SERVICES **PeiServices,\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
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_PAGES) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
+(EFIAPI *EFI_PEI_ALLOCATE_PAGES)(\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN EFI_MEMORY_TYPE MemoryType,\r
IN UINTN Pages,\r
IN OUT EFI_PHYSICAL_ADDRESS *Memory\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_ALLOCATE_POOL) (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
+(EFIAPI *EFI_PEI_ALLOCATE_POOL)(\r
+ IN CONST EFI_PEI_SERVICES **PeiServices,\r
IN UINTN Size,\r
OUT VOID **Buffer\r
);\r
@param Source Pointer to the source buffer of the memory copy\r
@param Length Number of bytes to copy from Source to Destination.\r
\r
- @return None\r
-\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
@param Size Number of bytes in Buffer to fill.\r
@param Value Value to fill Buffer with\r
\r
- @return None\r
-\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
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_STATUS_CODE_TYPE Type,\r
- IN EFI_STATUS_CODE_VALUE Value,\r
- IN UINT32 Instance,\r
- IN EFI_GUID *CallerId OPTIONAL,\r
- IN EFI_STATUS_CODE_DATA *Data OPTIONAL\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
+ IN UINT32 Instance,\r
+ IN CONST EFI_GUID *CallerId OPTIONAL,\r
+ IN CONST EFI_STATUS_CODE_DATA *Data OPTIONAL\r
);\r
\r
/**\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_RESET_SYSTEM) (\r
- IN EFI_PEI_SERVICES **PeiServices\r
+(EFIAPI *EFI_PEI_RESET_SYSTEM)(\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
);\r
\r
/**\r
@retval EFI_INVALID_PARAMETER VolumeHandle or FileHandle or\r
FileName was NULL.\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
@param FileHandle Handle of the file.\r
\r
- @param FileInfo Upon exit, points to the file¡¯s\r
+ @param FileInfo Upon exit, points to the file's\r
information.\r
\r
@retval EFI_SUCCESS File information returned.\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
+ OUT EFI_FV_FILE_INFO *FileInfo\r
);\r
\r
\r
\r
@param VolumeHandle Handle of the volume.\r
\r
- @param VolumeInfo Upon exit, points to the volume¡¯s\r
+ @param VolumeInfo Upon exit, points to the volume's\r
information.\r
\r
@retval EFI_SUCCESS File information returned.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO) (\r
- IN CONST EFI_PEI_FV_HANDLE *VolumeHandle,\r
- OUT EFI_FV_INFO *VolumeInfo\r
+(EFIAPI *EFI_PEI_FFS_GET_VOLUME_INFO)(\r
+ IN EFI_PEI_FV_HANDLE VolumeHandle,\r
+ OUT EFI_FV_INFO *VolumeInfo\r
);\r
\r
/**\r
initialized after permanent memory is installed, even the first\r
time.\r
\r
- @param FileHandle PEIM¡¯s file handle. Must be the currently\r
- xecuting PEIM.\r
+ @param FileHandle PEIM's file handle. Must be the currently\r
+ executing PEIM.\r
\r
@retval EFI_SUCCESS The PEIM was successfully registered for\r
shadowing.\r
**/\r
typedef\r
EFI_STATUS\r
-(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW) (\r
- IN CONST EFI_PEI_FILE_HANDLE FileHandle\r
+(EFIAPI *EFI_PEI_REGISTER_FOR_SHADOW)(\r
+ IN EFI_PEI_FILE_HANDLE FileHandle\r
);\r
\r
\r
//\r
// PEI Services Table\r
//\r
-#define PEI_SERVICES_SIGNATURE 0x5652455320494550\r
-#define PEI_SERVICES_REVISION (PEI_SPECIFICATION_MAJOR_REVISION<<16) | (PEI_SPECIFICATION_MINOR_REVISION)\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