]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmbeddedPkg/Include/Library/PrePiLib.h
EmbeddedPkg/PrePiLib: Add FFS_CHECK_SECTION_HOOK when finding section
[mirror_edk2.git] / EmbeddedPkg / Include / Library / PrePiLib.h
index 7876788440934e31e52777962204c891c190f953..f60b6678185ac11dad8625aec038d896ad1a6168 100644 (file)
 EFI_STATUS\r
 EFIAPI\r
 FfsFindNextVolume (\r
-  IN UINTN                          Instance,\r
-  IN OUT EFI_PEI_FV_HANDLE          *VolumeHandle\r
+  IN UINTN                  Instance,\r
+  IN OUT EFI_PEI_FV_HANDLE  *VolumeHandle\r
   );\r
 \r
-\r
 /**\r
   This service enables discovery of additional firmware files.\r
 \r
@@ -48,17 +47,28 @@ FfsFindNextVolume (
 EFI_STATUS\r
 EFIAPI\r
 FfsFindNextFile (\r
-  IN EFI_FV_FILETYPE            SearchType,\r
-  IN EFI_PEI_FV_HANDLE          VolumeHandle,\r
-  IN OUT EFI_PEI_FILE_HANDLE    *FileHandle\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
+ * This is a hook which is used to check if the section is the target one.\r
+ *\r
+ */\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *FFS_CHECK_SECTION_HOOK)(\r
+  IN EFI_COMMON_SECTION_HEADER *Section\r
+  );\r
 \r
 /**\r
   This service enables discovery sections of a given type within a valid FFS file.\r
+  Caller also can provide a SectionCheckHook to do additional checking.\r
 \r
-  @param  SearchType            The value of the section type to find.\r
-  @param  FfsFileHeader         A pointer to the file header that contains the set of sections to\r
+  @param  SectionType           The value of the section type to find.\r
+  @param  SectionCheckHook      A hook which can check if the section is the target one.\r
+  @param  FileHeader            A pointer to the file header that contains the set of sections to\r
                                 be searched.\r
   @param  SectionData           A pointer to the discovered section, if successful.\r
 \r
@@ -69,12 +79,12 @@ FfsFindNextFile (
 EFI_STATUS\r
 EFIAPI\r
 FfsFindSectionData (\r
-  IN EFI_SECTION_TYPE           SectionType,\r
-  IN EFI_PEI_FILE_HANDLE        FileHandle,\r
-  OUT VOID                      **SectionData\r
+  IN EFI_SECTION_TYPE        SectionType,\r
+  IN FFS_CHECK_SECTION_HOOK  SectionCheckHook,\r
+  IN EFI_PEI_FILE_HANDLE     FileHandle,\r
+  OUT VOID                   **SectionData\r
   );\r
 \r
-\r
 /**\r
   Find a file in the volume by name\r
 \r
@@ -96,12 +106,11 @@ FfsFindSectionData (
 EFI_STATUS\r
 EFIAPI\r
 FfsFindFileByName (\r
-  IN CONST  EFI_GUID            *FileName,\r
-  IN CONST  EFI_PEI_FV_HANDLE   VolumeHandle,\r
-  OUT       EFI_PEI_FILE_HANDLE *FileHandle\r
+  IN CONST  EFI_GUID             *FileName,\r
+  IN CONST  EFI_PEI_FV_HANDLE    VolumeHandle,\r
+  OUT       EFI_PEI_FILE_HANDLE  *FileHandle\r
   );\r
 \r
-\r
 /**\r
   Get information about the file by name.\r
 \r
@@ -121,11 +130,10 @@ FfsFindFileByName (
 EFI_STATUS\r
 EFIAPI\r
 FfsGetFileInfo (\r
-  IN CONST  EFI_PEI_FILE_HANDLE   FileHandle,\r
-  OUT EFI_FV_FILE_INFO            *FileInfo\r
+  IN CONST  EFI_PEI_FILE_HANDLE  FileHandle,\r
+  OUT EFI_FV_FILE_INFO           *FileInfo\r
   );\r
 \r
-\r
 /**\r
   Get Information about the volume by name\r
 \r
@@ -145,12 +153,10 @@ FfsGetFileInfo (
 EFI_STATUS\r
 EFIAPI\r
 FfsGetVolumeInfo (\r
-  IN  EFI_PEI_FV_HANDLE       VolumeHandle,\r
-  OUT EFI_FV_INFO             *VolumeInfo\r
+  IN  EFI_PEI_FV_HANDLE  VolumeHandle,\r
+  OUT EFI_FV_INFO        *VolumeInfo\r
   );\r
 \r
-\r
-\r
 /**\r
   Get Fv image from the FV type file, then add FV & FV2 Hob.\r
 \r
@@ -163,15 +169,14 @@ FfsGetVolumeInfo (
 EFI_STATUS\r
 EFIAPI\r
 FfsProcessFvFile (\r
-  IN  EFI_PEI_FILE_HANDLE   FvFileHandle\r
+  IN  EFI_PEI_FILE_HANDLE  FvFileHandle\r
   );\r
 \r
-\r
 /**\r
   Search through every FV until you find a file of type FileType\r
 \r
   @param FileType        File handle of a Fv type file.\r
-  @param Volumehandle    On succes Volume Handle of the match\r
+  @param Volumehandle    On success Volume Handle of the match\r
   @param FileHandle      On success File Handle of the match\r
 \r
   @retval EFI_NOT_FOUND  FV image can't be found.\r
@@ -181,12 +186,11 @@ FfsProcessFvFile (
 EFI_STATUS\r
 EFIAPI\r
 FfsAnyFvFindFirstFile (\r
-  IN  EFI_FV_FILETYPE       FileType,\r
-  OUT EFI_PEI_FV_HANDLE     *VolumeHandle,\r
-  OUT EFI_PEI_FILE_HANDLE   *FileHandle\r
+  IN  EFI_FV_FILETYPE      FileType,\r
+  OUT EFI_PEI_FV_HANDLE    *VolumeHandle,\r
+  OUT EFI_PEI_FILE_HANDLE  *FileHandle\r
   );\r
 \r
-\r
 /**\r
   Get Fv image from the FV type file, then add FV & FV2 Hob.\r
 \r
@@ -200,10 +204,9 @@ FfsAnyFvFindFirstFile (
 EFI_STATUS\r
 EFIAPI\r
 FfsProcessFvFile (\r
-  IN  EFI_PEI_FILE_HANDLE   FvFileHandle\r
+  IN  EFI_PEI_FILE_HANDLE  FvFileHandle\r
   );\r
 \r
-\r
 /**\r
   This service enables PEIMs to ascertain the present value of the boot mode.\r
 \r
@@ -217,7 +220,6 @@ GetBootMode (
   VOID\r
   );\r
 \r
-\r
 /**\r
   This service enables PEIMs to update the boot mode variable.\r
 \r
@@ -229,7 +231,7 @@ GetBootMode (
 EFI_STATUS\r
 EFIAPI\r
 SetBootMode (\r
-  IN EFI_BOOT_MODE              BootMode\r
+  IN EFI_BOOT_MODE  BootMode\r
   );\r
 \r
 /**\r
@@ -247,7 +249,6 @@ GetHobList (
   VOID\r
   );\r
 \r
-\r
 /**\r
   Updates the pointer to the HOB list.\r
 \r
@@ -257,10 +258,10 @@ GetHobList (
 EFI_STATUS\r
 EFIAPI\r
 SetHobList (\r
-  IN  VOID      *HobList\r
+  IN  VOID  *HobList\r
   );\r
 \r
-EFI_HOB_HANDOFF_INFO_TABLE*\r
+EFI_HOB_HANDOFF_INFO_TABLE *\r
 HobConstructor (\r
   IN VOID   *EfiMemoryBegin,\r
   IN UINTN  EfiMemoryLength,\r
@@ -280,11 +281,10 @@ HobConstructor (
 **/\r
 VOID *\r
 CreateHob (\r
-  IN  UINT16    HobType,\r
-  IN  UINT16    HobLenght\r
+  IN  UINT16  HobType,\r
+  IN  UINT16  HobLenght\r
   );\r
 \r
-\r
 /**\r
   Returns the next instance of a HOB type from the starting HOB.\r
 \r
@@ -304,8 +304,8 @@ CreateHob (
 VOID *\r
 EFIAPI\r
 GetNextHob (\r
-  IN UINT16                 Type,\r
-  IN CONST VOID             *HobStart\r
+  IN UINT16      Type,\r
+  IN CONST VOID  *HobStart\r
   );\r
 \r
 /**\r
@@ -322,7 +322,7 @@ GetNextHob (
 VOID *\r
 EFIAPI\r
 GetFirstHob (\r
-  IN UINT16                 Type\r
+  IN UINT16  Type\r
   );\r
 \r
 /**\r
@@ -347,8 +347,8 @@ GetFirstHob (
 VOID *\r
 EFIAPI\r
 GetNextGuidHob (\r
-  IN CONST EFI_GUID         *Guid,\r
-  IN CONST VOID             *HobStart\r
+  IN CONST EFI_GUID  *Guid,\r
+  IN CONST VOID      *HobStart\r
   );\r
 \r
 /**\r
@@ -368,10 +368,9 @@ GetNextGuidHob (
 VOID *\r
 EFIAPI\r
 GetFirstGuidHob (\r
-  IN CONST EFI_GUID         *Guid\r
+  IN CONST EFI_GUID  *Guid\r
   );\r
 \r
-\r
 /**\r
   Builds a HOB for a loaded PE32 module.\r
 \r
@@ -390,10 +389,10 @@ GetFirstGuidHob (
 VOID\r
 EFIAPI\r
 BuildModuleHob (\r
-  IN CONST EFI_GUID         *ModuleName,\r
-  IN EFI_PHYSICAL_ADDRESS   MemoryAllocationModule,\r
-  IN UINT64                 ModuleLength,\r
-  IN EFI_PHYSICAL_ADDRESS   EntryPoint\r
+  IN CONST EFI_GUID        *ModuleName,\r
+  IN EFI_PHYSICAL_ADDRESS  MemoryAllocationModule,\r
+  IN UINT64                ModuleLength,\r
+  IN EFI_PHYSICAL_ADDRESS  EntryPoint\r
   );\r
 \r
 /**\r
@@ -440,8 +439,8 @@ BuildResourceDescriptorHob (
 VOID *\r
 EFIAPI\r
 BuildGuidHob (\r
-  IN CONST EFI_GUID              *Guid,\r
-  IN UINTN                       DataLength\r
+  IN CONST EFI_GUID  *Guid,\r
+  IN UINTN           DataLength\r
   );\r
 \r
 /**\r
@@ -467,9 +466,9 @@ BuildGuidHob (
 VOID *\r
 EFIAPI\r
 BuildGuidDataHob (\r
-  IN CONST EFI_GUID              *Guid,\r
-  IN VOID                        *Data,\r
-  IN UINTN                       DataLength\r
+  IN CONST EFI_GUID  *Guid,\r
+  IN VOID            *Data,\r
+  IN UINTN           DataLength\r
   );\r
 \r
 /**\r
@@ -487,12 +486,12 @@ BuildGuidDataHob (
 VOID\r
 EFIAPI\r
 BuildFvHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length\r
   );\r
 \r
 /**\r
-  Builds a Firmware Volume HOB and a resrouce descriptor hob\r
+  Builds a Firmware Volume HOB and a resource descriptor hob\r
 \r
   This function builds a Firmware Volume HOB.\r
   It can only be invoked during PEI phase;\r
@@ -511,7 +510,6 @@ BuildFvHobs (
   IN EFI_RESOURCE_ATTRIBUTE_TYPE  *ResourceAttribute  OPTIONAL\r
   );\r
 \r
-\r
 /**\r
   Builds a EFI_HOB_TYPE_FV2 HOB.\r
 \r
@@ -529,10 +527,10 @@ BuildFvHobs (
 VOID\r
 EFIAPI\r
 BuildFv2Hob (\r
-  IN          EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN          UINT64                      Length,\r
-  IN CONST    EFI_GUID                    *FvName,\r
-  IN CONST    EFI_GUID                    *FileName\r
+  IN          EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN          UINT64                Length,\r
+  IN CONST    EFI_GUID              *FvName,\r
+  IN CONST    EFI_GUID              *FileName\r
   );\r
 \r
 /**\r
@@ -550,8 +548,8 @@ BuildFv2Hob (
 VOID\r
 EFIAPI\r
 BuildCvHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length\r
   );\r
 \r
 /**\r
@@ -569,8 +567,8 @@ BuildCvHob (
 VOID\r
 EFIAPI\r
 BuildCpuHob (\r
-  IN UINT8                       SizeOfMemorySpace,\r
-  IN UINT8                       SizeOfIoSpace\r
+  IN UINT8  SizeOfMemorySpace,\r
+  IN UINT8  SizeOfIoSpace\r
   );\r
 \r
 /**\r
@@ -588,8 +586,8 @@ BuildCpuHob (
 VOID\r
 EFIAPI\r
 BuildStackHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length\r
   );\r
 \r
 /**\r
@@ -601,11 +599,10 @@ BuildStackHob (
 **/\r
 VOID\r
 UpdateStackHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length\r
   );\r
 \r
-\r
 /**\r
   Builds a HOB for the BSP store.\r
 \r
@@ -622,9 +619,9 @@ UpdateStackHob (
 VOID\r
 EFIAPI\r
 BuildBspStoreHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length,\r
-  IN EFI_MEMORY_TYPE             MemoryType\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length,\r
+  IN EFI_MEMORY_TYPE       MemoryType\r
   );\r
 \r
 /**\r
@@ -643,18 +640,17 @@ BuildBspStoreHob (
 VOID\r
 EFIAPI\r
 BuildMemoryAllocationHob (\r
-  IN EFI_PHYSICAL_ADDRESS        BaseAddress,\r
-  IN UINT64                      Length,\r
-  IN EFI_MEMORY_TYPE             MemoryType\r
+  IN EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN UINT64                Length,\r
+  IN EFI_MEMORY_TYPE       MemoryType\r
   );\r
 \r
-\r
 VOID\r
 EFIAPI\r
 BuildExtractSectionHob (\r
-  IN  EFI_GUID                                  *Guid,\r
-  IN  EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER   SectionGetInfo,\r
-  IN  EXTRACT_GUIDED_SECTION_DECODE_HANDLER     SectionExtraction\r
+  IN  EFI_GUID                                 *Guid,\r
+  IN  EXTRACT_GUIDED_SECTION_GET_INFO_HANDLER  SectionGetInfo,\r
+  IN  EXTRACT_GUIDED_SECTION_DECODE_HANDLER    SectionExtraction\r
   );\r
 \r
 VOID\r
@@ -663,7 +659,6 @@ BuildPeCoffLoaderHob (
   VOID\r
   );\r
 \r
-\r
 /**\r
   Allocates one or more 4KB pages of type EfiBootServicesData.\r
 \r
@@ -680,7 +675,26 @@ BuildPeCoffLoaderHob (
 VOID *\r
 EFIAPI\r
 AllocatePages (\r
-  IN UINTN            Pages\r
+  IN UINTN  Pages\r
+  );\r
+\r
+/**\r
+  Allocates one or more 4KB pages of type EfiRuntimeServicesData.\r
+\r
+  Allocates the number of 4KB pages of type EfiRuntimeServicesData and returns a pointer to the\r
+  allocated buffer.  The buffer returned is aligned on a 4KB boundary.  If Pages is 0, then NULL\r
+  is returned.  If there is not enough memory remaining to satisfy the request, then NULL is\r
+  returned.\r
+\r
+  @param  Pages                 The number of 4 KB pages to allocate.\r
+\r
+  @return A pointer to the allocated buffer or NULL if allocation fails.\r
+\r
+**/\r
+VOID *\r
+EFIAPI\r
+AllocateRuntimePages (\r
+  IN UINTN  Pages\r
   );\r
 \r
 /**\r
@@ -701,7 +715,6 @@ AllocatePool (
   IN UINTN  AllocationSize\r
   );\r
 \r
-\r
 /**\r
   Allocates one or more 4KB pages of type EfiBootServicesData at a specified alignment.\r
 \r
@@ -725,14 +738,13 @@ AllocateAlignedPages (
   IN UINTN  Alignment\r
   );\r
 \r
-\r
 EFI_STATUS\r
 EFIAPI\r
 LoadPeCoffImage (\r
-  IN  VOID                                      *PeCoffImage,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *ImageAddress,\r
-  OUT UINT64                                    *ImageSize,\r
-  OUT EFI_PHYSICAL_ADDRESS                      *EntryPoint\r
+  IN  VOID                  *PeCoffImage,\r
+  OUT EFI_PHYSICAL_ADDRESS  *ImageAddress,\r
+  OUT UINT64                *ImageSize,\r
+  OUT EFI_PHYSICAL_ADDRESS  *EntryPoint\r
   );\r
 \r
 EFI_STATUS\r
@@ -745,7 +757,7 @@ LoadDxeCoreFromFfsFile (
 EFI_STATUS\r
 EFIAPI\r
 LoadDxeCoreFromFv (\r
-  IN UINTN  *FvInstance,   OPTIONAL\r
+  IN UINTN  *FvInstance    OPTIONAL,\r
   IN UINTN  StackSize\r
   );\r
 \r
@@ -755,11 +767,4 @@ DecompressFirstFv (
   VOID\r
   );\r
 \r
-VOID\r
-EFIAPI\r
-AddDxeCoreReportStatusCodeCallback (\r
-  VOID\r
-  );\r
-\r
-\r
 #endif\r