X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FInclude%2FLibrary%2FPeiCoreEntryPoint.h;h=1eb974c9d34f75df0db93b9606934e5670e314d6;hp=4d38468685ae14c8b95c872856d0d305a845d5e5;hb=34860f7a069641fb9e14077c01605215aae68a9b;hpb=6d728ea86e4bf50d6d77847a95ad8f4657bda406 diff --git a/MdePkg/Include/Library/PeiCoreEntryPoint.h b/MdePkg/Include/Library/PeiCoreEntryPoint.h index 4d38468685..1eb974c9d3 100644 --- a/MdePkg/Include/Library/PeiCoreEntryPoint.h +++ b/MdePkg/Include/Library/PeiCoreEntryPoint.h @@ -16,27 +16,33 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #define __MODULE_ENTRY_POINT_H__ /** - - Enrty point to PEI core. - - @param SecCoreData Points to a data structure containing - information about the PEI core's - operating environment, such as the size - and location of temporary RAM, the stack - location and the BFV location. The type - EFI_SEC_PEI_HAND_OFF is - - @param PpiList Points to a list of one or more PPI - descriptors to be installed initially by - the PEI core. An empty PPI list consists - of a single descriptor with the end-tag - EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. - As part of its initialization phase, the - PEI Foundation will add these SEC-hosted - PPIs to its PPI database such that both - the PEI Foundation and any modules can - leverage the associated service calls - and/or code in these early PPIs. + The entry point of PE/COFF Image for the PEI Core. + + This function is the entry point for the PEI Foundation, which allows the SEC phase + to pass information about the stack, temporary RAM and the Boot Firmware Volume. + In addition, it also allows the SEC phase to pass services and data forward for use + during the PEI phase in the form of one or more PPIs. + There is no limit to the number of additional PPIs that can be passed from SEC into + the PEI Foundation. As part of its initialization phase, the PEI Foundation will add + these SEC-hosted PPIs to its PPI database such that both the PEI Foundation and any + modules can leverage the associated service calls and/or code in these early PPIs. + This function is required to call ProcessModuleEntryPointList() with the Context + parameter set to NULL. ProcessModuleEntryPoint() is never expected to return. + The PEI Core is responsible for calling ProcessLibraryConstructorList() as soon as + the PEI Services Table and the file handle for the PEI Core itself have been established. + If ProcessModuleEntryPointList() returns, then ASSERT() and halt the system. + + @param SecCoreData Points to a data structure containing information about the PEI + core's operating environment, such as the size and location of + temporary RAM, the stack location and the BFV location. + + @param PpiList Points to a list of one or more PPI descriptors to be installed + initially by the PEI core. An empty PPI list consists of a single + descriptor with the end-tag EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. + As part of its initialization phase, the PEI Foundation will add + these SEC-hosted PPIs to its PPI database such that both the PEI + Foundation and any modules can leverage the associated service calls + and/or code in these early PPIs. **/ VOID @@ -51,26 +57,17 @@ _ModuleEntryPoint( This function is required to call _ModuleEntryPoint() passing in SecCoreData and PpiList. - @param SecCoreData Points to a data structure containing - information about the PEI core's - operating environment, such as the size - and location of temporary RAM, the stack - location and the BFV location. The type - EFI_SEC_PEI_HAND_OFF is - - @param PpiList Points to a list of one or more PPI - descriptors to be installed initially by - the PEI core. An empty PPI list consists - of a single descriptor with the end-tag - EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. - As part of its initialization phase, the - PEI Foundation will add these SEC-hosted - PPIs to its PPI database such that both - the PEI Foundation and any modules can - leverage the associated service calls - and/or code in these early PPIs. - - @return Status returned by entry points of core and drivers. + @param SecCoreData Points to a data structure containing information about the PEI core's + operating environment, such as the size and location of temporary RAM, + the stack location and the BFV location. + + @param PpiList Points to a list of one or more PPI descriptors to be installed + initially by the PEI core. An empty PPI list consists of a single + descriptor with the end-tag EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. + As part of its initialization phase, the PEI Foundation will add these + SEC-hosted PPIs to its PPI database such that both the PEI Foundation + and any modules can leverage the associated service calls and/or code + in these early PPIs. **/ VOID @@ -84,12 +81,18 @@ EfiMain ( Autogenerated function that calls the library constructors for all of the module's dependent libraries. - This function must be called by the PEI Core once an initial PEI Services Table has - been established. + This function must be called by the PEI Core once an initial PEI Services Table has been established. + This function calls the set of library constructors for the set of library instances that a + module depends on. This include library instances that a module depends on directly and library + instances that a module depends on indirectly through other libraries. + This function is autogenerated by build tools and those build tools are responsible for collecting + the set of library instances, determine which ones have constructors, and calling the library + constructors in the proper order based upon each of the library instances own dependencies. + The PEI Core must call this function with a NULL FileHandle value as soon as the initial PEI + Services Table has been established. - @param FileHandle Handle of the file being invoked. - Type EFI_PEI_FILE_HANDLE is defined in FfsFindNextFile(). - @param PeiServices Pointer to the PEI Services Table. + @param FileHandle Handle of the file being invoked. + @param PeiServices Describes the list of possible PEI Services. **/ VOID @@ -104,26 +107,24 @@ ProcessLibraryConstructorList ( Autogenerated function that calls a set of module entry points. This function must be called by _ModuleEntryPoint(). - - @param SecCoreData Points to a data structure containing - information about the PEI core's - operating environment, such as the size - and location of temporary RAM, the stack - location and the BFV location. The type - EFI_SEC_PEI_HAND_OFF is - - @param PpiList Points to a list of one or more PPI - descriptors to be installed initially by - the PEI core. An empty PPI list consists - of a single descriptor with the end-tag - EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. - As part of its initialization phase, the - PEI Foundation will add these SEC-hosted - PPIs to its PPI database such that both - the PEI Foundation and any modules can - leverage the associated service calls - and/or code in these early PPIs. - @param OldCoreData Pointer to Original startup information. + This function calls the set of module entry points. + This function is autogenerated by build tools and those build tools are responsible + for collecting the module entry points and calling them in a specified order. + + @param SecCoreData Points to a data structure containing information about the PEI + core's operating environment, such as the size and location of + temporary RAM, the stack location and the BFV location. + + @param PpiList Points to a list of one or more PPI descriptors to be installed + initially by the PEI core. An empty PPI list consists of a single + descriptor with the end-tag EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST. + As part of its initialization phase, the PEI Foundation will add + these SEC-hosted PPIs to its PPI database such that both the PEI + Foundation and any modules can leverage the associated service calls + and/or code in these early PPIs. + @param Context A pointer to a private context structure defined by the PEI Core + implementation. The implementation of _ModuleEntryPoint() must set + this parameter is NULL to indicate that this is the first PEI phase. **/ VOID @@ -131,7 +132,7 @@ EFIAPI ProcessModuleEntryPointList ( IN CONST EFI_SEC_PEI_HAND_OFF *SecCoreData, IN CONST EFI_PEI_PPI_DESCRIPTOR *PpiList, - IN VOID *OldCoreData + IN VOID *Context ); #endif