/** @file\r
-\r
The internal header file includes the common header files, defines\r
internal structure and functions used by DxeCore module.\r
- \r
-Copyright (c) 2006 - 2008, Intel Corporation \r
-All rights reserved. This program and the accompanying materials \r
-are licensed and made available under the terms and conditions of the BSD License \r
-which accompanies this distribution. The full text of the license may be found at \r
-http://opensource.org/licenses/bsd-license.php \r
- \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
+\r
+Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution. The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
\r
**/\r
\r
\r
#include <Protocol/LoadedImage.h>\r
#include <Protocol/GuidedSectionExtraction.h>\r
-#include <Guid/DebugImageInfoTable.h>\r
#include <Protocol/DevicePath.h>\r
#include <Protocol/Runtime.h>\r
#include <Protocol/LoadFile.h>\r
+#include <Protocol/LoadFile2.h>\r
#include <Protocol/DriverBinding.h>\r
#include <Protocol/VariableWrite.h>\r
#include <Protocol/PlatformDriverOverride.h>\r
#include <Protocol/Variable.h>\r
-#include <Guid/MemoryTypeInformation.h>\r
-#include <Guid/FirmwareFileSystem2.h>\r
-#include <Guid/HobList.h>\r
#include <Protocol/Timer.h>\r
#include <Protocol/SimpleFileSystem.h>\r
#include <Protocol/Bds.h>\r
-#include <Guid/FileInfo.h>\r
#include <Protocol/RealTimeClock.h>\r
-#include <Guid/Apriori.h>\r
#include <Protocol/WatchdogTimer.h>\r
#include <Protocol/FirmwareVolume2.h>\r
#include <Protocol/MonotonicCounter.h>\r
-#include <Guid/DxeServices.h>\r
-#include <Guid/MemoryAllocationHob.h>\r
#include <Protocol/StatusCode.h>\r
-#include <Protocol/CustomizedDecompress.h>\r
#include <Protocol/Decompress.h>\r
#include <Protocol/LoadPe32Image.h>\r
-#include <Protocol/FirmwareVolumeDispatch.h>\r
#include <Protocol/Security.h>\r
+#include <Protocol/Security2.h>\r
#include <Protocol/Ebc.h>\r
-#include <Guid/EventLegacyBios.h>\r
#include <Protocol/Reset.h>\r
-#include <Protocol/EdkDecompress.h>\r
#include <Protocol/Cpu.h>\r
-#include <Guid/EventGroup.h>\r
#include <Protocol/Metronome.h>\r
#include <Protocol/FirmwareVolumeBlock.h>\r
#include <Protocol/Capsule.h>\r
#include <Protocol/BusSpecificDriverOverride.h>\r
-#include <Protocol/Performance.h>\r
-#include <Uefi/UefiTcgPlatform.h>\r
-#include <Protocol/TcgPlatform.h>\r
+#include <Protocol/DriverFamilyOverride.h>\r
+#include <Protocol/TcgService.h>\r
+#include <Protocol/HiiPackageList.h>\r
+#include <Protocol/SmmBase2.h>\r
+#include <Guid/MemoryTypeInformation.h>\r
+#include <Guid/FirmwareFileSystem2.h>\r
+#include <Guid/FirmwareFileSystem3.h>\r
+#include <Guid/HobList.h>\r
+#include <Guid/DebugImageInfoTable.h>\r
+#include <Guid/FileInfo.h>\r
+#include <Guid/Apriori.h>\r
+#include <Guid/DxeServices.h>\r
+#include <Guid/MemoryAllocationHob.h>\r
+#include <Guid/EventLegacyBios.h>\r
+#include <Guid/EventGroup.h>\r
+#include <Guid/EventExitBootServiceFailed.h>\r
+#include <Guid/LoadModuleAtFixedAddress.h>\r
+#include <Guid/IdleLoopEvent.h>\r
+#include <Guid/VectorHandoffTable.h>\r
+#include <Ppi/VectorHandoffInfo.h>\r
+#include <Guid/MemoryProfile.h>\r
\r
#include <Library/DxeCoreEntryPoint.h>\r
#include <Library/DebugLib.h>\r
#include <Library/CacheMaintenanceLib.h>\r
#include <Library/BaseMemoryLib.h>\r
#include <Library/PeCoffLib.h>\r
+#include <Library/PeCoffGetEntryPointLib.h>\r
+#include <Library/PeCoffExtraActionLib.h>\r
#include <Library/PcdLib.h>\r
#include <Library/MemoryAllocationLib.h>\r
-\r
-#include "DebugImageInfo.h"\r
-#include "Library.h"\r
-#include "FwVolBlock.h"\r
-#include "FwVolDriver.h"\r
-#include "gcd.h"\r
-#include "imem.h"\r
-#include "Image.h"\r
-#include "Exec.h"\r
-#include "hand.h"\r
+#include <Library/DevicePathLib.h>\r
+#include <Library/UefiBootServicesTableLib.h>\r
+#include <Library/ReportStatusCodeLib.h>\r
+#include <Library/DxeServicesLib.h>\r
+#include <Library/DebugAgentLib.h>\r
+#include <Library/CpuExceptionHandlerLib.h>\r
\r
\r
-//\r
-// Modifier for EFI DXE Services\r
-//\r
-#define EFI_DXESERVICE\r
-\r
//\r
// attributes for reserved memory before it is promoted to system memory\r
//\r
\r
\r
///\r
-/// EFI_DEP_REPLACE_TRUE - Used to dynamically patch the dependecy expression\r
-/// to save time. A EFI_DEP_PUSH is evauated one an\r
-/// replaced with EFI_DEP_REPLACE_TRUE\r
+/// EFI_DEP_REPLACE_TRUE - Used to dynamically patch the dependency expression\r
+/// to save time. A EFI_DEP_PUSH is evaluated one an\r
+/// replaced with EFI_DEP_REPLACE_TRUE. If PI spec's Vol 2\r
+/// Driver Execution Environment Core Interface use 0xff\r
+/// as new DEPEX opcode. EFI_DEP_REPLACE_TRUE should be\r
+/// defined to a new value that is not conflicting with PI spec.\r
///\r
#define EFI_DEP_REPLACE_TRUE 0xff\r
\r
EFI_EVENT Event;\r
VOID *Registration;\r
BOOLEAN Present;\r
-} ARCHITECTURAL_PROTOCOL_ENTRY;\r
-\r
-typedef struct {\r
- EFI_STATUS_CODE_DATA DataHeader;\r
- EFI_HANDLE Handle;\r
-} EFI_DXE_DEVICE_HANDLE_EXTENDED_DATA;\r
-\r
-#define EFI_STATUS_CODE_DXE_CORE_GUID \\r
- { 0x335984bd, 0xe805, 0x409a, { 0xb8, 0xf8, 0xd2, 0x7e, 0xce, 0x5f, 0xf7, 0xa6 } }\r
+} EFI_CORE_PROTOCOL_NOTIFY_ENTRY;\r
\r
//\r
// DXE Dispatcher Data structures\r
//\r
\r
-#define KNOWN_HANDLE_SIGNATURE EFI_SIGNATURE_32('k','n','o','w')\r
+#define KNOWN_HANDLE_SIGNATURE SIGNATURE_32('k','n','o','w')\r
typedef struct {\r
UINTN Signature;\r
- LIST_ENTRY Link; // mFvHandleList \r
+ LIST_ENTRY Link; // mFvHandleList\r
EFI_HANDLE Handle;\r
+ EFI_GUID FvNameGuid;\r
} KNOWN_HANDLE;\r
\r
\r
-#define EFI_CORE_DRIVER_ENTRY_SIGNATURE EFI_SIGNATURE_32('d','r','v','r')\r
+#define EFI_CORE_DRIVER_ENTRY_SIGNATURE SIGNATURE_32('d','r','v','r')\r
typedef struct {\r
UINTN Signature;\r
LIST_ENTRY Link; // mDriverList\r
BOOLEAN DepexProtocolError;\r
\r
EFI_HANDLE ImageHandle;\r
+ BOOLEAN IsFvImage;\r
\r
} EFI_CORE_DRIVER_ENTRY;\r
\r
//\r
//The data structure of GCD memory map entry\r
//\r
-#define EFI_GCD_MAP_SIGNATURE EFI_SIGNATURE_32('g','c','d','m')\r
+#define EFI_GCD_MAP_SIGNATURE SIGNATURE_32('g','c','d','m')\r
typedef struct {\r
UINTN Signature;\r
LIST_ENTRY Link;\r
EFI_HANDLE DeviceHandle;\r
} EFI_GCD_MAP_ENTRY;\r
\r
+\r
+#define LOADED_IMAGE_PRIVATE_DATA_SIGNATURE SIGNATURE_32('l','d','r','i')\r
+\r
+typedef struct {\r
+ UINTN Signature;\r
+ /// Image handle\r
+ EFI_HANDLE Handle;\r
+ /// Image type\r
+ UINTN Type;\r
+ /// If entrypoint has been called\r
+ BOOLEAN Started;\r
+ /// The image's entry point\r
+ EFI_IMAGE_ENTRY_POINT EntryPoint;\r
+ /// loaded image protocol\r
+ EFI_LOADED_IMAGE_PROTOCOL Info;\r
+ /// Location in memory\r
+ EFI_PHYSICAL_ADDRESS ImageBasePage;\r
+ /// Number of pages\r
+ UINTN NumberOfPages;\r
+ /// Original fixup data\r
+ CHAR8 *FixupData;\r
+ /// Tpl of started image\r
+ EFI_TPL Tpl;\r
+ /// Status returned by started image\r
+ EFI_STATUS Status;\r
+ /// Size of ExitData from started image\r
+ UINTN ExitDataSize;\r
+ /// Pointer to exit data from started image\r
+ VOID *ExitData;\r
+ /// Pointer to pool allocation for context save/restore\r
+ VOID *JumpBuffer;\r
+ /// Pointer to buffer for context save/restore\r
+ BASE_LIBRARY_JUMP_BUFFER *JumpContext;\r
+ /// Machine type from PE image\r
+ UINT16 Machine;\r
+ /// EBC Protocol pointer\r
+ EFI_EBC_PROTOCOL *Ebc;\r
+ /// Runtime image list\r
+ EFI_RUNTIME_IMAGE_ENTRY *RuntimeData;\r
+ /// Pointer to Loaded Image Device Path Protocol\r
+ EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath;\r
+ /// PeCoffLoader ImageContext\r
+ PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;\r
+ /// Status returned by LoadImage() service.\r
+ EFI_STATUS LoadImageStatus;\r
+} LOADED_IMAGE_PRIVATE_DATA;\r
+\r
+#define LOADED_IMAGE_PRIVATE_DATA_FROM_THIS(a) \\r
+ CR(a, LOADED_IMAGE_PRIVATE_DATA, Info, LOADED_IMAGE_PRIVATE_DATA_SIGNATURE)\r
+\r
+#define IMAGE_PROPERTIES_RECORD_CODE_SECTION_SIGNATURE SIGNATURE_32 ('I','P','R','C')\r
+\r
+typedef struct {\r
+ UINT32 Signature;\r
+ LIST_ENTRY Link;\r
+ EFI_PHYSICAL_ADDRESS CodeSegmentBase;\r
+ UINT64 CodeSegmentSize;\r
+} IMAGE_PROPERTIES_RECORD_CODE_SECTION;\r
+\r
+#define IMAGE_PROPERTIES_RECORD_SIGNATURE SIGNATURE_32 ('I','P','R','D')\r
+\r
+typedef struct {\r
+ UINT32 Signature;\r
+ LIST_ENTRY Link;\r
+ EFI_PHYSICAL_ADDRESS ImageBase;\r
+ UINT64 ImageSize;\r
+ UINTN CodeSegmentCount;\r
+ LIST_ENTRY CodeSegmentList;\r
+} IMAGE_PROPERTIES_RECORD;\r
+\r
//\r
// DXE Core Global Variables\r
//\r
extern EFI_SYSTEM_TABLE *gDxeCoreST;\r
-extern EFI_BOOT_SERVICES *gDxeCoreBS;\r
extern EFI_RUNTIME_SERVICES *gDxeCoreRT;\r
extern EFI_DXE_SERVICES *gDxeCoreDS;\r
extern EFI_HANDLE gDxeCoreImageHandle;\r
\r
+extern BOOLEAN gMemoryMapTerminated;\r
+\r
extern EFI_DECOMPRESS_PROTOCOL gEfiDecompress;\r
\r
extern EFI_RUNTIME_ARCH_PROTOCOL *gRuntime;\r
extern EFI_METRONOME_ARCH_PROTOCOL *gMetronome;\r
extern EFI_TIMER_ARCH_PROTOCOL *gTimer;\r
extern EFI_SECURITY_ARCH_PROTOCOL *gSecurity;\r
+extern EFI_SECURITY2_ARCH_PROTOCOL *gSecurity2;\r
extern EFI_BDS_ARCH_PROTOCOL *gBds;\r
-extern EFI_STATUS_CODE_PROTOCOL *gStatusCode;\r
+extern EFI_SMM_BASE2_PROTOCOL *gSmmBase2;\r
\r
extern EFI_TPL gEfiCurrentTpl;\r
\r
extern BOOLEAN gDispatcherRunning;\r
extern EFI_RUNTIME_ARCH_PROTOCOL gRuntimeTemplate;\r
\r
+extern EFI_LOAD_FIXED_ADDRESS_CONFIGURATION_TABLE gLoadModuleAtFixAddressConfigurationTable;\r
+extern BOOLEAN gLoadFixedAddressCodeMemoryReady;\r
//\r
// Service Initialization Functions\r
//\r
VOID\r
CoreInitializePool (\r
VOID\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
The first descriptor that is added must be general usable\r
memory as the addition allocates heap.\r
\r
- @param Type The type of memory to add \r
- @param Start The starting address in the memory range Must be \r
- page aligned \r
- @param NumberOfPages The number of pages in the range \r
- @param Attribute Attributes of the memory to add \r
+ @param Type The type of memory to add\r
+ @param Start The starting address in the memory range Must be\r
+ page aligned\r
+ @param NumberOfPages The number of pages in the range\r
+ @param Attribute Attributes of the memory to add\r
\r
@return None. The range is added to the memory map\r
\r
IN EFI_PHYSICAL_ADDRESS Start,\r
IN UINT64 NumberOfPages,\r
IN UINT64 Attribute\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
VOID\r
CoreReleaseGcdMemoryLock (\r
VOID\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
VOID\r
CoreAcquireGcdMemoryLock (\r
VOID\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
- External function. Initializes the GCD and memory services based on the memory\r
- descriptor HOBs. This function is responsible for priming the GCD map and the\r
- memory map, so memory allocations and resource allocations can be made. The first\r
- part of this function can not depend on any memory services until at least one\r
- memory descriptor is provided to the memory services. Then the memory services\r
- can be used to intialize the GCD map.\r
+ External function. Initializes memory services based on the memory\r
+ descriptor HOBs. This function is responsible for priming the memory\r
+ map, so memory allocations and resource allocations can be made.\r
+ The first part of this function can not depend on any memory services\r
+ until at least one memory descriptor is provided to the memory services.\r
\r
- @param HobStart The start address of the HOB. \r
- @param MemoryBaseAddress Start address of memory region found to init DXE \r
- core. \r
- @param MemoryLength Length of memory region found to init DXE core. \r
+ @param HobStart The start address of the HOB.\r
+ @param MemoryBaseAddress Start address of memory region found to init DXE\r
+ core.\r
+ @param MemoryLength Length of memory region found to init DXE core.\r
\r
@retval EFI_SUCCESS Memory services successfully initialized.\r
\r
**/\r
EFI_STATUS\r
CoreInitializeMemoryServices (\r
- IN VOID **HobStart,\r
- IN EFI_PHYSICAL_ADDRESS *MemoryBaseAddress,\r
- IN UINT64 *MemoryLength\r
- )\r
-;\r
+ IN VOID **HobStart,\r
+ OUT EFI_PHYSICAL_ADDRESS *MemoryBaseAddress,\r
+ OUT UINT64 *MemoryLength\r
+ );\r
\r
\r
\r
/**\r
External function. Initializes the GCD and memory services based on the memory\r
descriptor HOBs. This function is responsible for priming the GCD map and the\r
- memory map, so memory allocations and resource allocations can be made. The first\r
- part of this function can not depend on any memory services until at least one\r
- memory descriptor is provided to the memory services. Then the memory services\r
- can be used to intialize the GCD map. The HobStart will be relocated to a pool\r
- buffer.\r
+ memory map, so memory allocations and resource allocations can be made. The\r
+ HobStart will be relocated to a pool buffer.\r
\r
- @param HobStart The start address of the HOB \r
- @param MemoryBaseAddress Start address of memory region found to init DXE \r
- core. \r
- @param MemoryLength Length of memory region found to init DXE core. \r
+ @param HobStart The start address of the HOB\r
+ @param MemoryBaseAddress Start address of memory region found to init DXE\r
+ core.\r
+ @param MemoryLength Length of memory region found to init DXE core.\r
\r
@retval EFI_SUCCESS GCD services successfully initialized.\r
\r
**/\r
EFI_STATUS\r
CoreInitializeGcdServices (\r
- IN OUT VOID **HobStart,\r
+ IN OUT VOID **HobStart,\r
IN EFI_PHYSICAL_ADDRESS MemoryBaseAddress,\r
IN UINT64 MemoryLength\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
- Initializes "event" support and populates parts of the System and Runtime Table.\r
-\r
+ Initializes "event" support.\r
\r
@retval EFI_SUCCESS Always return success\r
\r
EFI_STATUS\r
CoreInitializeEventServices (\r
VOID\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Add the Image Services to EFI Boot Services Table and install the protocol\r
interfaces for this image.\r
\r
- @param HobStart The HOB to initialize \r
+ @param HobStart The HOB to initialize\r
\r
@return Status code.\r
\r
EFI_STATUS\r
CoreInitializeImageServices (\r
IN VOID *HobStart\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
\r
**/\r
VOID\r
-CoreNotifyOnArchProtocolInstallation (\r
+CoreNotifyOnProtocolInstallation (\r
VOID\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
- Return TRUE if all AP services are availible.\r
-\r
+ Return TRUE if all AP services are available.\r
\r
- @retval EFI_SUCCESS All AP services are available \r
+ @retval EFI_SUCCESS All AP services are available\r
@retval EFI_NOT_FOUND At least one AP service is not available\r
\r
**/\r
EFI_STATUS\r
CoreAllEfiServicesAvailable (\r
VOID\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
VOID\r
CalculateEfiHdrCrc (\r
IN OUT EFI_TABLE_HEADER *Hdr\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Called by the platform code to process a tick.\r
\r
- @param Duration The number of 100ns elasped since the last call \r
+ @param Duration The number of 100ns elapsed since the last call\r
to TimerTick\r
\r
**/\r
VOID\r
EFIAPI\r
CoreTimerTick (\r
- IN UINT64 Duration\r
- )\r
-;\r
+ IN UINT64 Duration\r
+ );\r
\r
\r
/**\r
Initialize the dispatcher. Initialize the notification function that runs when\r
- a FV protocol is added to the system.\r
+ an FV2 protocol is added to the system.\r
\r
**/\r
VOID\r
CoreInitializeDispatcher (\r
VOID\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
routine in this case. The SOR is just ignored and is a nop in the grammer.\r
POSTFIX means all the math is done on top of the stack.\r
\r
- @param DriverEntry DriverEntry element to update \r
+ @param DriverEntry DriverEntry element to update.\r
\r
- @retval TRUE If driver is ready to run. \r
- @retval FALSE If driver is not ready to run or some fatal error \r
+ @retval TRUE If driver is ready to run.\r
+ @retval FALSE If driver is not ready to run or some fatal error\r
was found.\r
\r
**/\r
BOOLEAN\r
CoreIsSchedulable (\r
- IN EFI_CORE_DRIVER_ENTRY *DriverEntry \r
- )\r
-;\r
+ IN EFI_CORE_DRIVER_ENTRY *DriverEntry\r
+ );\r
\r
\r
/**\r
it will be cleared by CoreSchedule(), and then the driver can be\r
dispatched.\r
\r
- @param DriverEntry DriverEntry element to update \r
+ @param DriverEntry DriverEntry element to update .\r
\r
@retval EFI_SUCCESS It always works.\r
\r
**/\r
EFI_STATUS\r
CorePreProcessDepex (\r
- IN EFI_CORE_DRIVER_ENTRY *DriverEntry \r
- )\r
-;\r
+ IN EFI_CORE_DRIVER_ENTRY *DriverEntry\r
+ );\r
\r
\r
\r
/**\r
Terminates all boot services.\r
\r
- @param ImageHandle Handle that identifies the exiting image. \r
+ @param ImageHandle Handle that identifies the exiting image.\r
@param MapKey Key to the latest memory map.\r
\r
- @retval EFI_SUCCESS Boot Services terminated \r
+ @retval EFI_SUCCESS Boot Services terminated\r
@retval EFI_INVALID_PARAMETER MapKey is incorrect.\r
\r
**/\r
CoreExitBootServices (\r
IN EFI_HANDLE ImageHandle,\r
IN UINTN MapKey\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Make sure the memory map is following all the construction rules,\r
it is the last time to check memory map error before exit boot services.\r
\r
- @param MapKey Memory map key \r
+ @param MapKey Memory map key\r
\r
- @retval EFI_INVALID_PARAMETER Memory map not consistent with construction \r
- rules. \r
+ @retval EFI_INVALID_PARAMETER Memory map not consistent with construction\r
+ rules.\r
@retval EFI_SUCCESS Valid memory map.\r
\r
**/\r
EFI_STATUS\r
CoreTerminateMemoryMap (\r
- IN UINTN MapKey\r
- )\r
-;\r
+ IN UINTN MapKey\r
+ );\r
\r
\r
/**\r
VOID\r
CoreNotifySignalList (\r
IN EFI_GUID *EventGroup\r
- )\r
-;\r
+ );\r
\r
\r
\r
Boot Service called to add, modify, or remove a system configuration table from\r
the EFI System Table.\r
\r
- @param Guid Pointer to the GUID for the entry to add, update, or \r
- remove \r
- @param Table Pointer to the configuration table for the entry to add, \r
- update, or remove, may be NULL. \r
+ @param Guid Pointer to the GUID for the entry to add, update, or\r
+ remove\r
+ @param Table Pointer to the configuration table for the entry to add,\r
+ update, or remove, may be NULL.\r
\r
@return EFI_SUCCESS Guid, Table pair added, updated, or removed.\r
@return EFI_INVALID_PARAMETER Input GUID not valid.\r
EFI_STATUS\r
EFIAPI\r
CoreInstallConfigurationTable (\r
- IN EFI_GUID *Guid,\r
- IN VOID *Table\r
- )\r
-;\r
+ IN EFI_GUID *Guid,\r
+ IN VOID *Table\r
+ );\r
\r
\r
\r
Raise the task priority level to the new level.\r
High level is implemented by disabling processor interrupts.\r
\r
- @param NewTpl New task priority level \r
+ @param NewTpl New task priority level\r
\r
@return The previous task priority level\r
\r
EFI_TPL\r
EFIAPI\r
CoreRaiseTpl (\r
- IN EFI_TPL NewTpl\r
- )\r
-;\r
+ IN EFI_TPL NewTpl\r
+ );\r
\r
\r
\r
VOID\r
EFIAPI\r
CoreRestoreTpl (\r
- IN EFI_TPL NewTpl\r
- )\r
-;\r
+ IN EFI_TPL NewTpl\r
+ );\r
\r
\r
\r
\r
@param Microseconds The number of microseconds to stall execution.\r
\r
- @retval EFI_SUCCESS Execution was stalled for at least the requested \r
- amount of microseconds. \r
+ @retval EFI_SUCCESS Execution was stalled for at least the requested\r
+ amount of microseconds.\r
@retval EFI_NOT_AVAILABLE_YET gMetronome is not available yet\r
\r
**/\r
EFIAPI\r
CoreStall (\r
IN UINTN Microseconds\r
- )\r
-;\r
+ );\r
\r
\r
\r
EFI_STATUS\r
EFIAPI\r
CoreSetWatchdogTimer (\r
- IN UINTN Timeout,\r
- IN UINT64 WatchdogCode,\r
- IN UINTN DataSize,\r
- IN CHAR16 *WatchdogData OPTIONAL\r
- )\r
-;\r
+ IN UINTN Timeout,\r
+ IN UINT64 WatchdogCode,\r
+ IN UINTN DataSize,\r
+ IN CHAR16 *WatchdogData OPTIONAL\r
+ );\r
\r
\r
\r
Wrapper function to CoreInstallProtocolInterfaceNotify. This is the public API which\r
Calls the private one which contains a BOOLEAN parameter for notifications\r
\r
- @param UserHandle The handle to install the protocol handler on, \r
- or NULL if a new handle is to be allocated \r
- @param Protocol The protocol to add to the handle \r
- @param InterfaceType Indicates whether Interface is supplied in \r
- native form. \r
- @param Interface The interface for the protocol being added \r
+ @param UserHandle The handle to install the protocol handler on,\r
+ or NULL if a new handle is to be allocated\r
+ @param Protocol The protocol to add to the handle\r
+ @param InterfaceType Indicates whether Interface is supplied in\r
+ native form.\r
+ @param Interface The interface for the protocol being added\r
\r
@return Status code\r
\r
IN EFI_GUID *Protocol,\r
IN EFI_INTERFACE_TYPE InterfaceType,\r
IN VOID *Interface\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Installs a protocol interface into the boot services environment.\r
\r
- @param UserHandle The handle to install the protocol handler on, \r
- or NULL if a new handle is to be allocated \r
- @param Protocol The protocol to add to the handle \r
- @param InterfaceType Indicates whether Interface is supplied in \r
- native form. \r
- @param Interface The interface for the protocol being added \r
- @param Notify indicates whether notify the notification list \r
- for this protocol \r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter \r
- @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate \r
+ @param UserHandle The handle to install the protocol handler on,\r
+ or NULL if a new handle is to be allocated\r
+ @param Protocol The protocol to add to the handle\r
+ @param InterfaceType Indicates whether Interface is supplied in\r
+ native form.\r
+ @param Interface The interface for the protocol being added\r
+ @param Notify indicates whether notify the notification list\r
+ for this protocol\r
+\r
+ @retval EFI_INVALID_PARAMETER Invalid parameter\r
+ @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate\r
@retval EFI_SUCCESS Protocol interface successfully installed\r
\r
**/\r
IN EFI_INTERFACE_TYPE InterfaceType,\r
IN VOID *Interface,\r
IN BOOLEAN Notify\r
- )\r
-;\r
+ );\r
\r
\r
\r
occures all the protocols added by this function are removed. This is\r
basically a lib function to save space.\r
\r
- @param Handle The handle to install the protocol handlers on, \r
- or NULL if a new handle is to be allocated \r
- @param ... EFI_GUID followed by protocol instance. A NULL \r
- terminates the list. The pairs are the \r
- arguments to InstallProtocolInterface(). All the \r
- protocols are added to Handle. \r
+ @param Handle The handle to install the protocol handlers on,\r
+ or NULL if a new handle is to be allocated\r
+ @param ... EFI_GUID followed by protocol instance. A NULL\r
+ terminates the list. The pairs are the\r
+ arguments to InstallProtocolInterface(). All the\r
+ protocols are added to Handle.\r
\r
- @retval EFI_INVALID_PARAMETER Handle is NULL. \r
- @retval EFI_SUCCESS Protocol interfaces successfully installed.\r
+ @retval EFI_SUCCESS All the protocol interface was installed.\r
+ @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols.\r
+ @retval EFI_ALREADY_STARTED A Device Path Protocol instance was passed in that is already present in\r
+ the handle database.\r
+ @retval EFI_INVALID_PARAMETER Handle is NULL.\r
+ @retval EFI_INVALID_PARAMETER Protocol is already installed on the handle specified by Handle.\r
\r
**/\r
EFI_STATUS\r
CoreInstallMultipleProtocolInterfaces (\r
IN OUT EFI_HANDLE *Handle,\r
...\r
- )\r
-;\r
+ );\r
\r
\r
\r
This function calls UnisatllProtocolInterface() in a loop. This is\r
basically a lib function to save space.\r
\r
- @param Handle The handle to uninstall the protocol \r
- @param ... EFI_GUID followed by protocol instance. A NULL \r
- terminates the list. The pairs are the \r
- arguments to UninstallProtocolInterface(). All \r
- the protocols are added to Handle. \r
+ @param Handle The handle to uninstall the protocol\r
+ @param ... EFI_GUID followed by protocol instance. A NULL\r
+ terminates the list. The pairs are the\r
+ arguments to UninstallProtocolInterface(). All\r
+ the protocols are added to Handle.\r
\r
@return Status code\r
\r
CoreUninstallMultipleProtocolInterfaces (\r
IN EFI_HANDLE Handle,\r
...\r
- )\r
-;\r
+ );\r
\r
\r
\r
/**\r
Reinstall a protocol interface on a device handle. The OldInterface for Protocol is replaced by the NewInterface.\r
\r
- @param UserHandle Handle on which the interface is to be \r
- reinstalled \r
- @param Protocol The numeric ID of the interface \r
- @param OldInterface A pointer to the old interface \r
- @param NewInterface A pointer to the new interface \r
+ @param UserHandle Handle on which the interface is to be\r
+ reinstalled\r
+ @param Protocol The numeric ID of the interface\r
+ @param OldInterface A pointer to the old interface\r
+ @param NewInterface A pointer to the new interface\r
\r
@retval EFI_SUCCESS The protocol interface was installed\r
@retval EFI_NOT_FOUND The OldInterface on the handle was not found\r
IN EFI_GUID *Protocol,\r
IN VOID *OldInterface,\r
IN VOID *NewInterface\r
- )\r
-;\r
+ );\r
\r
\r
\r
If the last protocol interface is remove from the handle, the\r
handle is freed.\r
\r
- @param UserHandle The handle to remove the protocol handler from \r
- @param Protocol The protocol, of protocol:interface, to remove \r
- @param Interface The interface, of protocol:interface, to remove \r
+ @param UserHandle The handle to remove the protocol handler from\r
+ @param Protocol The protocol, of protocol:interface, to remove\r
+ @param Interface The interface, of protocol:interface, to remove\r
\r
- @retval EFI_INVALID_PARAMETER Protocol is NULL. \r
+ @retval EFI_INVALID_PARAMETER Protocol is NULL.\r
@retval EFI_SUCCESS Protocol interface successfully uninstalled.\r
\r
**/\r
IN EFI_HANDLE UserHandle,\r
IN EFI_GUID *Protocol,\r
IN VOID *Interface\r
- )\r
-;\r
+ );\r
\r
\r
\r
/**\r
Queries a handle to determine if it supports a specified protocol.\r
\r
- @param UserHandle The handle being queried. \r
- @param Protocol The published unique identifier of the protocol. \r
- @param Interface Supplies the address where a pointer to the \r
- corresponding Protocol Interface is returned. \r
+ @param UserHandle The handle being queried.\r
+ @param Protocol The published unique identifier of the protocol.\r
+ @param Interface Supplies the address where a pointer to the\r
+ corresponding Protocol Interface is returned.\r
\r
@return The requested protocol interface for the handle\r
\r
EFI_STATUS\r
EFIAPI\r
CoreHandleProtocol (\r
- IN EFI_HANDLE UserHandle,\r
- IN EFI_GUID *Protocol,\r
- OUT VOID **Interface\r
- )\r
-;\r
+ IN EFI_HANDLE UserHandle,\r
+ IN EFI_GUID *Protocol,\r
+ OUT VOID **Interface\r
+ );\r
\r
\r
\r
invokes it to obtain the protocol interface. Usage information\r
is registered in the protocol data base.\r
\r
- @param UserHandle The handle to obtain the protocol interface on \r
- @param Protocol The ID of the protocol \r
- @param Interface The location to return the protocol interface \r
- @param ImageHandle The handle of the Image that is opening the \r
- protocol interface specified by Protocol and \r
- Interface. \r
- @param ControllerHandle The controller handle that is requiring this \r
- interface. \r
- @param Attributes The open mode of the protocol interface \r
- specified by Handle and Protocol. \r
-\r
- @retval EFI_INVALID_PARAMETER Protocol is NULL. \r
+ @param UserHandle The handle to obtain the protocol interface on\r
+ @param Protocol The ID of the protocol\r
+ @param Interface The location to return the protocol interface\r
+ @param ImageHandle The handle of the Image that is opening the\r
+ protocol interface specified by Protocol and\r
+ Interface.\r
+ @param ControllerHandle The controller handle that is requiring this\r
+ interface.\r
+ @param Attributes The open mode of the protocol interface\r
+ specified by Handle and Protocol.\r
+\r
+ @retval EFI_INVALID_PARAMETER Protocol is NULL.\r
@retval EFI_SUCCESS Get the protocol interface.\r
\r
**/\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_HANDLE ControllerHandle,\r
IN UINT32 Attributes\r
- )\r
-;\r
+ );\r
\r
\r
\r
/**\r
Return information about Opened protocols in the system\r
\r
- @param UserHandle The handle to close the protocol interface on \r
- @param Protocol The ID of the protocol \r
- @param EntryBuffer A pointer to a buffer of open protocol \r
- information in the form of \r
- EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures. \r
+ @param UserHandle The handle to close the protocol interface on\r
+ @param Protocol The ID of the protocol\r
+ @param EntryBuffer A pointer to a buffer of open protocol\r
+ information in the form of\r
+ EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures.\r
@param EntryCount Number of EntryBuffer entries\r
\r
**/\r
IN EFI_GUID *Protocol,\r
OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,\r
OUT UINTN *EntryCount\r
- )\r
-;\r
+ );\r
\r
\r
\r
/**\r
Closes a protocol on a handle that was opened using OpenProtocol().\r
\r
- @param UserHandle The handle for the protocol interface that was \r
- previously opened with OpenProtocol(), and is \r
- now being closed. \r
- @param Protocol The published unique identifier of the protocol. \r
- It is the caller's responsibility to pass in a \r
- valid GUID. \r
- @param AgentHandle The handle of the agent that is closing the \r
- protocol interface. \r
- @param ControllerHandle If the agent that opened a protocol is a driver \r
- that follows the EFI Driver Model, then this \r
- parameter is the controller handle that required \r
- the protocol interface. If the agent does not \r
- follow the EFI Driver Model, then this parameter \r
- is optional and may be NULL. \r
-\r
- @retval EFI_SUCCESS The protocol instance was closed. \r
- @retval EFI_INVALID_PARAMETER Handle, AgentHandle or ControllerHandle is not a \r
- valid EFI_HANDLE. \r
- @retval EFI_NOT_FOUND Can not find the specified protocol or \r
+ @param UserHandle The handle for the protocol interface that was\r
+ previously opened with OpenProtocol(), and is\r
+ now being closed.\r
+ @param Protocol The published unique identifier of the protocol.\r
+ It is the caller's responsibility to pass in a\r
+ valid GUID.\r
+ @param AgentHandle The handle of the agent that is closing the\r
+ protocol interface.\r
+ @param ControllerHandle If the agent that opened a protocol is a driver\r
+ that follows the EFI Driver Model, then this\r
+ parameter is the controller handle that required\r
+ the protocol interface. If the agent does not\r
+ follow the EFI Driver Model, then this parameter\r
+ is optional and may be NULL.\r
+\r
+ @retval EFI_SUCCESS The protocol instance was closed.\r
+ @retval EFI_INVALID_PARAMETER Handle, AgentHandle or ControllerHandle is not a\r
+ valid EFI_HANDLE.\r
+ @retval EFI_NOT_FOUND Can not find the specified protocol or\r
AgentHandle.\r
\r
**/\r
IN EFI_GUID *Protocol,\r
IN EFI_HANDLE AgentHandle,\r
IN EFI_HANDLE ControllerHandle\r
- )\r
-;\r
+ );\r
\r
\r
\r
Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated\r
from pool.\r
\r
- @param UserHandle The handle from which to retrieve the list of \r
- protocol interface GUIDs. \r
- @param ProtocolBuffer A pointer to the list of protocol interface GUID \r
- pointers that are installed on Handle. \r
- @param ProtocolBufferCount A pointer to the number of GUID pointers present \r
- in ProtocolBuffer. \r
-\r
- @retval EFI_SUCCESS The list of protocol interface GUIDs installed \r
- on Handle was returned in ProtocolBuffer. The \r
- number of protocol interface GUIDs was returned \r
- in ProtocolBufferCount. \r
- @retval EFI_INVALID_PARAMETER Handle is NULL. \r
- @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE. \r
- @retval EFI_INVALID_PARAMETER ProtocolBuffer is NULL. \r
- @retval EFI_INVALID_PARAMETER ProtocolBufferCount is NULL. \r
- @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the \r
+ @param UserHandle The handle from which to retrieve the list of\r
+ protocol interface GUIDs.\r
+ @param ProtocolBuffer A pointer to the list of protocol interface GUID\r
+ pointers that are installed on Handle.\r
+ @param ProtocolBufferCount A pointer to the number of GUID pointers present\r
+ in ProtocolBuffer.\r
+\r
+ @retval EFI_SUCCESS The list of protocol interface GUIDs installed\r
+ on Handle was returned in ProtocolBuffer. The\r
+ number of protocol interface GUIDs was returned\r
+ in ProtocolBufferCount.\r
+ @retval EFI_INVALID_PARAMETER Handle is NULL.\r
+ @retval EFI_INVALID_PARAMETER Handle is not a valid EFI_HANDLE.\r
+ @retval EFI_INVALID_PARAMETER ProtocolBuffer is NULL.\r
+ @retval EFI_INVALID_PARAMETER ProtocolBufferCount is NULL.\r
+ @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the\r
results.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreProtocolsPerHandle (\r
- IN EFI_HANDLE UserHandle,\r
- OUT EFI_GUID ***ProtocolBuffer,\r
- OUT UINTN *ProtocolBufferCount\r
- )\r
-;\r
+ IN EFI_HANDLE UserHandle,\r
+ OUT EFI_GUID ***ProtocolBuffer,\r
+ OUT UINTN *ProtocolBufferCount\r
+ );\r
\r
\r
\r
/**\r
Add a new protocol notification record for the request protocol.\r
\r
- @param Protocol The requested protocol to add the notify \r
- registration \r
- @param Event The event to signal \r
- @param Registration Returns the registration record \r
+ @param Protocol The requested protocol to add the notify\r
+ registration\r
+ @param Event The event to signal\r
+ @param Registration Returns the registration record\r
\r
- @retval EFI_INVALID_PARAMETER Invalid parameter \r
- @retval EFI_SUCCESS Successfully returned the registration record \r
+ @retval EFI_INVALID_PARAMETER Invalid parameter\r
+ @retval EFI_SUCCESS Successfully returned the registration record\r
that has been added\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreRegisterProtocolNotify (\r
- IN EFI_GUID *Protocol,\r
- IN EFI_EVENT Event,\r
- OUT VOID **Registration\r
- )\r
-;\r
- \r
+ IN EFI_GUID *Protocol,\r
+ IN EFI_EVENT Event,\r
+ OUT VOID **Registration\r
+ );\r
+\r
+\r
+/**\r
+ Removes all the events in the protocol database that match Event.\r
+\r
+ @param Event The event to search for in the protocol\r
+ database.\r
+\r
+ @return EFI_SUCCESS when done searching the entire database.\r
+\r
+**/\r
+EFI_STATUS\r
+CoreUnregisterProtocolNotify (\r
+ IN EFI_EVENT Event\r
+ );\r
\r
\r
/**\r
Locates the requested handle(s) and returns them in Buffer.\r
\r
- @param SearchType The type of search to perform to locate the \r
- handles \r
- @param Protocol The protocol to search for \r
- @param SearchKey Dependant on SearchType \r
- @param BufferSize On input the size of Buffer. On output the \r
- size of data returned. \r
- @param Buffer The buffer to return the results in \r
-\r
- @retval EFI_BUFFER_TOO_SMALL Buffer too small, required buffer size is \r
- returned in BufferSize. \r
- @retval EFI_INVALID_PARAMETER Invalid parameter \r
- @retval EFI_SUCCESS Successfully found the requested handle(s) and \r
+ @param SearchType The type of search to perform to locate the\r
+ handles\r
+ @param Protocol The protocol to search for\r
+ @param SearchKey Dependant on SearchType\r
+ @param BufferSize On input the size of Buffer. On output the\r
+ size of data returned.\r
+ @param Buffer The buffer to return the results in\r
+\r
+ @retval EFI_BUFFER_TOO_SMALL Buffer too small, required buffer size is\r
+ returned in BufferSize.\r
+ @retval EFI_INVALID_PARAMETER Invalid parameter\r
+ @retval EFI_SUCCESS Successfully found the requested handle(s) and\r
returns them in Buffer.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreLocateHandle (\r
- IN EFI_LOCATE_SEARCH_TYPE SearchType,\r
- IN EFI_GUID *Protocol OPTIONAL,\r
- IN VOID *SearchKey OPTIONAL,\r
- IN OUT UINTN *BufferSize,\r
- OUT EFI_HANDLE *Buffer\r
- )\r
-;\r
- \r
+ IN EFI_LOCATE_SEARCH_TYPE SearchType,\r
+ IN EFI_GUID *Protocol OPTIONAL,\r
+ IN VOID *SearchKey OPTIONAL,\r
+ IN OUT UINTN *BufferSize,\r
+ OUT EFI_HANDLE *Buffer\r
+ );\r
+\r
\r
\r
/**\r
Locates the handle to a device on the device path that best matches the specified protocol.\r
\r
- @param Protocol The protocol to search for. \r
- @param DevicePath On input, a pointer to a pointer to the device \r
- path. On output, the device path pointer is \r
- modified to point to the remaining part of the \r
- devicepath. \r
- @param Device A pointer to the returned device handle. \r
+ @param Protocol The protocol to search for.\r
+ @param DevicePath On input, a pointer to a pointer to the device\r
+ path. On output, the device path pointer is\r
+ modified to point to the remaining part of the\r
+ devicepath.\r
+ @param Device A pointer to the returned device handle.\r
\r
- @retval EFI_SUCCESS The resulting handle was returned. \r
- @retval EFI_NOT_FOUND No handles matched the search. \r
+ @retval EFI_SUCCESS The resulting handle was returned.\r
+ @retval EFI_NOT_FOUND No handles matched the search.\r
@retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreLocateDevicePath (\r
- IN EFI_GUID *Protocol,\r
- IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,\r
- OUT EFI_HANDLE *Device\r
- )\r
-;\r
+ IN EFI_GUID *Protocol,\r
+ IN OUT EFI_DEVICE_PATH_PROTOCOL **DevicePath,\r
+ OUT EFI_HANDLE *Device\r
+ );\r
+\r
\r
- \r
\r
/**\r
Function returns an array of handles that support the requested protocol\r
in a buffer allocated from pool. This is a version of CoreLocateHandle()\r
that allocates a buffer for the caller.\r
\r
- @param SearchType Specifies which handle(s) are to be returned. \r
- @param Protocol Provides the protocol to search by. This \r
- parameter is only valid for SearchType \r
- ByProtocol. \r
- @param SearchKey Supplies the search key depending on the \r
- SearchType. \r
- @param NumberHandles The number of handles returned in Buffer. \r
- @param Buffer A pointer to the buffer to return the requested \r
- array of handles that support Protocol. \r
-\r
- @retval EFI_SUCCESS The result array of handles was returned. \r
- @retval EFI_NOT_FOUND No handles match the search. \r
- @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the \r
- matching results. \r
- @retval EFI_INVALID_PARAMETER Invalid parameter\r
+ @param SearchType Specifies which handle(s) are to be returned.\r
+ @param Protocol Provides the protocol to search by. This\r
+ parameter is only valid for SearchType\r
+ ByProtocol.\r
+ @param SearchKey Supplies the search key depending on the\r
+ SearchType.\r
+ @param NumberHandles The number of handles returned in Buffer.\r
+ @param Buffer A pointer to the buffer to return the requested\r
+ array of handles that support Protocol.\r
+\r
+ @retval EFI_SUCCESS The result array of handles was returned.\r
+ @retval EFI_NOT_FOUND No handles match the search.\r
+ @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the\r
+ matching results.\r
+ @retval EFI_INVALID_PARAMETER One or more parameters are not valid.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreLocateHandleBuffer (\r
- IN EFI_LOCATE_SEARCH_TYPE SearchType,\r
- IN EFI_GUID *Protocol OPTIONAL,\r
- IN VOID *SearchKey OPTIONAL,\r
- IN OUT UINTN *NumberHandles,\r
- OUT EFI_HANDLE **Buffer\r
- )\r
-;\r
+ IN EFI_LOCATE_SEARCH_TYPE SearchType,\r
+ IN EFI_GUID *Protocol OPTIONAL,\r
+ IN VOID *SearchKey OPTIONAL,\r
+ IN OUT UINTN *NumberHandles,\r
+ OUT EFI_HANDLE **Buffer\r
+ );\r
+\r
\r
- \r
\r
/**\r
Return the first Protocol Interface that matches the Protocol GUID. If\r
- Registration is pasased in return a Protocol Instance that was just add\r
- to the system. If Retistration is NULL return the first Protocol Interface\r
+ Registration is passed in, return a Protocol Instance that was just add\r
+ to the system. If Registration is NULL return the first Protocol Interface\r
you find.\r
\r
- @param Protocol The protocol to search for \r
- @param Registration Optional Registration Key returned from \r
- RegisterProtocolNotify() \r
- @param Interface Return the Protocol interface (instance). \r
+ @param Protocol The protocol to search for\r
+ @param Registration Optional Registration Key returned from\r
+ RegisterProtocolNotify()\r
+ @param Interface Return the Protocol interface (instance).\r
\r
- @retval EFI_SUCCESS If a valid Interface is returned \r
- @retval EFI_INVALID_PARAMETER Invalid parameter \r
+ @retval EFI_SUCCESS If a valid Interface is returned\r
+ @retval EFI_INVALID_PARAMETER Invalid parameter\r
@retval EFI_NOT_FOUND Protocol interface not found\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreLocateProtocol (\r
- IN EFI_GUID *Protocol,\r
- IN VOID *Registration OPTIONAL,\r
- OUT VOID **Interface\r
- )\r
-;\r
+ IN EFI_GUID *Protocol,\r
+ IN VOID *Registration OPTIONAL,\r
+ OUT VOID **Interface\r
+ );\r
\r
\r
/**\r
UINT64\r
CoreGetHandleDatabaseKey (\r
VOID\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Go connect any handles that were created or modified while a image executed.\r
\r
- @param Key The Key to show that the handle has been \r
+ @param Key The Key to show that the handle has been\r
created/modified\r
\r
**/\r
VOID\r
CoreConnectHandlesByKey (\r
UINT64 Key\r
- )\r
-;\r
+ );\r
\r
\r
\r
/**\r
Connects one or more drivers to a controller.\r
\r
- @param ControllerHandle Handle of the controller to be \r
- connected. \r
- @param DriverImageHandle DriverImageHandle A pointer to an \r
- ordered list of driver image \r
- handles. \r
- @param RemainingDevicePath RemainingDevicePath A pointer to \r
- the device path that specifies a \r
- child of the controller specified \r
- by ControllerHandle. \r
- @param Recursive Whether the function would be \r
- called recursively or not. \r
-\r
- @return Status code.\r
+ @param ControllerHandle The handle of the controller to which driver(s) are to be connected.\r
+ @param DriverImageHandle A pointer to an ordered list handles that support the\r
+ EFI_DRIVER_BINDING_PROTOCOL.\r
+ @param RemainingDevicePath A pointer to the device path that specifies a child of the\r
+ controller specified by ControllerHandle.\r
+ @param Recursive If TRUE, then ConnectController() is called recursively\r
+ until the entire tree of controllers below the controller specified\r
+ by ControllerHandle have been created. If FALSE, then\r
+ the tree of controllers is only expanded one level.\r
+\r
+ @retval EFI_SUCCESS 1) One or more drivers were connected to ControllerHandle.\r
+ 2) No drivers were connected to ControllerHandle, but\r
+ RemainingDevicePath is not NULL, and it is an End Device\r
+ Path Node.\r
+ @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
+ @retval EFI_NOT_FOUND 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances\r
+ present in the system.\r
+ 2) No drivers were connected to ControllerHandle.\r
+ @retval EFI_SECURITY_VIOLATION\r
+ The user has no permission to start UEFI device drivers on the device path\r
+ associated with the ControllerHandle or specified by the RemainingDevicePath.\r
\r
**/\r
-EFI_STATUS \r
+EFI_STATUS\r
EFIAPI\r
CoreConnectController (\r
IN EFI_HANDLE ControllerHandle,\r
IN EFI_HANDLE *DriverImageHandle OPTIONAL,\r
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL,\r
IN BOOLEAN Recursive\r
- )\r
-;\r
+ );\r
\r
\r
\r
/**\r
Disonnects a controller from a driver\r
\r
- @param ControllerHandle ControllerHandle The handle of \r
- the controller from which \r
- driver(s) are to be \r
- disconnected. \r
- @param DriverImageHandle DriverImageHandle The driver to \r
- disconnect from ControllerHandle. \r
- @param ChildHandle ChildHandle The handle of the \r
- child to destroy. \r
-\r
- @retval EFI_SUCCESS One or more drivers were \r
- disconnected from the controller. \r
- @retval EFI_SUCCESS On entry, no drivers are managing \r
- ControllerHandle. \r
- @retval EFI_SUCCESS DriverImageHandle is not NULL, \r
- and on entry DriverImageHandle is \r
- not managing ControllerHandle. \r
- @retval EFI_INVALID_PARAMETER ControllerHandle is not a valid \r
- EFI_HANDLE. \r
- @retval EFI_INVALID_PARAMETER DriverImageHandle is not NULL, \r
- and it is not a valid EFI_HANDLE. \r
- @retval EFI_INVALID_PARAMETER ChildHandle is not NULL, and it \r
- is not a valid EFI_HANDLE. \r
- @retval EFI_OUT_OF_RESOURCES There are not enough resources \r
- available to disconnect any \r
- drivers from ControllerHandle. \r
- @retval EFI_DEVICE_ERROR The controller could not be \r
- disconnected because of a device \r
+ @param ControllerHandle ControllerHandle The handle of\r
+ the controller from which\r
+ driver(s) are to be\r
+ disconnected.\r
+ @param DriverImageHandle DriverImageHandle The driver to\r
+ disconnect from ControllerHandle.\r
+ @param ChildHandle ChildHandle The handle of the\r
+ child to destroy.\r
+\r
+ @retval EFI_SUCCESS One or more drivers were\r
+ disconnected from the controller.\r
+ @retval EFI_SUCCESS On entry, no drivers are managing\r
+ ControllerHandle.\r
+ @retval EFI_SUCCESS DriverImageHandle is not NULL,\r
+ and on entry DriverImageHandle is\r
+ not managing ControllerHandle.\r
+ @retval EFI_INVALID_PARAMETER ControllerHandle is NULL.\r
+ @retval EFI_INVALID_PARAMETER DriverImageHandle is not NULL,\r
+ and it is not a valid EFI_HANDLE.\r
+ @retval EFI_INVALID_PARAMETER ChildHandle is not NULL, and it\r
+ is not a valid EFI_HANDLE.\r
+ @retval EFI_OUT_OF_RESOURCES There are not enough resources\r
+ available to disconnect any\r
+ drivers from ControllerHandle.\r
+ @retval EFI_DEVICE_ERROR The controller could not be\r
+ disconnected because of a device\r
error.\r
\r
**/\r
-EFI_STATUS \r
+EFI_STATUS\r
EFIAPI\r
CoreDisconnectController (\r
- IN EFI_HANDLE ControllerHandle,\r
- IN EFI_HANDLE DriverImageHandle OPTIONAL,\r
- IN EFI_HANDLE ChildHandle OPTIONAL\r
- )\r
-;\r
+ IN EFI_HANDLE ControllerHandle,\r
+ IN EFI_HANDLE DriverImageHandle OPTIONAL,\r
+ IN EFI_HANDLE ChildHandle OPTIONAL\r
+ );\r
\r
\r
\r
/**\r
Allocates pages from the memory map.\r
\r
- @param Type The type of allocation to perform \r
- @param MemoryType The type of memory to turn the allocated pages \r
- into \r
- @param NumberOfPages The number of pages to allocate \r
- @param Memory A pointer to receive the base allocated memory \r
- address \r
+ @param Type The type of allocation to perform\r
+ @param MemoryType The type of memory to turn the allocated pages\r
+ into\r
+ @param NumberOfPages The number of pages to allocate\r
+ @param Memory A pointer to receive the base allocated memory\r
+ address\r
\r
@return Status. On success, Memory is filled in with the base address allocated\r
- @retval EFI_INVALID_PARAMETER Parameters violate checking rules defined in \r
- spec. \r
- @retval EFI_NOT_FOUND Could not allocate pages match the requirement. \r
- @retval EFI_OUT_OF_RESOURCES No enough pages to allocate. \r
+ @retval EFI_INVALID_PARAMETER Parameters violate checking rules defined in\r
+ spec.\r
+ @retval EFI_NOT_FOUND Could not allocate pages match the requirement.\r
+ @retval EFI_OUT_OF_RESOURCES No enough pages to allocate.\r
@retval EFI_SUCCESS Pages successfully allocated.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreAllocatePages (\r
- IN EFI_ALLOCATE_TYPE Type,\r
- IN EFI_MEMORY_TYPE MemoryType,\r
- IN UINTN NumberOfPages,\r
- IN OUT EFI_PHYSICAL_ADDRESS *Memory\r
- )\r
-;\r
-\r
-\r
+ IN EFI_ALLOCATE_TYPE Type,\r
+ IN EFI_MEMORY_TYPE MemoryType,\r
+ IN UINTN NumberOfPages,\r
+ IN OUT EFI_PHYSICAL_ADDRESS *Memory\r
+ );\r
\r
/**\r
Frees previous allocated pages.\r
\r
- @param Memory Base address of memory being freed \r
- @param NumberOfPages The number of pages to free \r
+ @param Memory Base address of memory being freed\r
+ @param NumberOfPages The number of pages to free\r
\r
- @retval EFI_NOT_FOUND Could not find the entry that covers the range \r
- @retval EFI_INVALID_PARAMETER Address not aligned \r
+ @retval EFI_NOT_FOUND Could not find the entry that covers the range\r
+ @retval EFI_INVALID_PARAMETER Address not aligned\r
@return EFI_SUCCESS -Pages successfully freed.\r
\r
**/\r
-EFI_STATUS \r
+EFI_STATUS\r
EFIAPI\r
CoreFreePages (\r
IN EFI_PHYSICAL_ADDRESS Memory,\r
IN UINTN NumberOfPages\r
- )\r
-;\r
-\r
-\r
+ );\r
\r
/**\r
This function returns a copy of the current memory map. The map is an array of\r
memory descriptors, each of which describes a contiguous block of memory.\r
\r
- @param MemoryMapSize A pointer to the size, in bytes, of the \r
- MemoryMap buffer. On input, this is the size of \r
- the buffer allocated by the caller. On output, \r
- it is the size of the buffer returned by the \r
- firmware if the buffer was large enough, or the \r
- size of the buffer needed to contain the map if \r
- the buffer was too small. \r
- @param MemoryMap A pointer to the buffer in which firmware places \r
- the current memory map. \r
- @param MapKey A pointer to the location in which firmware \r
- returns the key for the current memory map. \r
- @param DescriptorSize A pointer to the location in which firmware \r
- returns the size, in bytes, of an individual \r
- EFI_MEMORY_DESCRIPTOR. \r
- @param DescriptorVersion A pointer to the location in which firmware \r
- returns the version number associated with the \r
- EFI_MEMORY_DESCRIPTOR. \r
-\r
- @retval EFI_SUCCESS The memory map was returned in the MemoryMap \r
- buffer. \r
- @retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current \r
- buffer size needed to hold the memory map is \r
- returned in MemoryMapSize. \r
+ @param MemoryMapSize A pointer to the size, in bytes, of the\r
+ MemoryMap buffer. On input, this is the size of\r
+ the buffer allocated by the caller. On output,\r
+ it is the size of the buffer returned by the\r
+ firmware if the buffer was large enough, or the\r
+ size of the buffer needed to contain the map if\r
+ the buffer was too small.\r
+ @param MemoryMap A pointer to the buffer in which firmware places\r
+ the current memory map.\r
+ @param MapKey A pointer to the location in which firmware\r
+ returns the key for the current memory map.\r
+ @param DescriptorSize A pointer to the location in which firmware\r
+ returns the size, in bytes, of an individual\r
+ EFI_MEMORY_DESCRIPTOR.\r
+ @param DescriptorVersion A pointer to the location in which firmware\r
+ returns the version number associated with the\r
+ EFI_MEMORY_DESCRIPTOR.\r
+\r
+ @retval EFI_SUCCESS The memory map was returned in the MemoryMap\r
+ buffer.\r
+ @retval EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small. The current\r
+ buffer size needed to hold the memory map is\r
+ returned in MemoryMapSize.\r
@retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreGetMemoryMap (\r
- IN OUT UINTN *MemoryMapSize,\r
- IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,\r
- OUT UINTN *MapKey,\r
- OUT UINTN *DescriptorSize,\r
- OUT UINT32 *DescriptorVersion\r
- )\r
-;\r
+ IN OUT UINTN *MemoryMapSize,\r
+ IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,\r
+ OUT UINTN *MapKey,\r
+ OUT UINTN *DescriptorSize,\r
+ OUT UINT32 *DescriptorVersion\r
+ );\r
\r
\r
\r
/**\r
Allocate pool of a particular type.\r
\r
- @param PoolType Type of pool to allocate \r
- @param Size The amount of pool to allocate \r
- @param Buffer The address to return a pointer to the allocated \r
- pool \r
+ @param PoolType Type of pool to allocate\r
+ @param Size The amount of pool to allocate\r
+ @param Buffer The address to return a pointer to the allocated\r
+ pool\r
\r
- @retval EFI_INVALID_PARAMETER PoolType not valid \r
- @retval EFI_OUT_OF_RESOURCES Size exceeds max pool size or allocation failed. \r
+ @retval EFI_INVALID_PARAMETER PoolType not valid or Buffer is NULL\r
+ @retval EFI_OUT_OF_RESOURCES Size exceeds max pool size or allocation failed.\r
@retval EFI_SUCCESS Pool successfully allocated.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreAllocatePool (\r
- IN EFI_MEMORY_TYPE PoolType,\r
- IN UINTN Size,\r
- OUT VOID **Buffer\r
- )\r
-;\r
+ IN EFI_MEMORY_TYPE PoolType,\r
+ IN UINTN Size,\r
+ OUT VOID **Buffer\r
+ );\r
+\r
+/**\r
+ Allocate pool of a particular type.\r
\r
+ @param PoolType Type of pool to allocate\r
+ @param Size The amount of pool to allocate\r
+ @param Buffer The address to return a pointer to the allocated\r
+ pool\r
\r
+ @retval EFI_INVALID_PARAMETER PoolType not valid or Buffer is NULL\r
+ @retval EFI_OUT_OF_RESOURCES Size exceeds max pool size or allocation failed.\r
+ @retval EFI_SUCCESS Pool successfully allocated.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoreInternalAllocatePool (\r
+ IN EFI_MEMORY_TYPE PoolType,\r
+ IN UINTN Size,\r
+ OUT VOID **Buffer\r
+ );\r
\r
/**\r
Frees pool.\r
\r
- @param Buffer The allocated pool entry to free \r
+ @param Buffer The allocated pool entry to free\r
\r
- @retval EFI_INVALID_PARAMETER Buffer is not a valid value. \r
+ @retval EFI_INVALID_PARAMETER Buffer is not a valid value.\r
@retval EFI_SUCCESS Pool successfully freed.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreFreePool (\r
- IN VOID *Buffer\r
- )\r
-;\r
+ IN VOID *Buffer\r
+ );\r
+\r
+/**\r
+ Frees pool.\r
\r
+ @param Buffer The allocated pool entry to free\r
+ @param PoolType Pointer to pool type\r
\r
+ @retval EFI_INVALID_PARAMETER Buffer is not a valid value.\r
+ @retval EFI_SUCCESS Pool successfully freed.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoreInternalFreePool (\r
+ IN VOID *Buffer,\r
+ OUT EFI_MEMORY_TYPE *PoolType OPTIONAL\r
+ );\r
\r
/**\r
Loads an EFI image into memory and returns a handle to the image.\r
\r
- @param BootPolicy If TRUE, indicates that the request originates \r
- from the boot manager, and that the boot \r
- manager is attempting to load FilePath as a \r
- boot selection. \r
- @param ParentImageHandle The caller's image handle. \r
- @param FilePath The specific file path from which the image is \r
- loaded. \r
- @param SourceBuffer If not NULL, a pointer to the memory location \r
- containing a copy of the image to be loaded. \r
- @param SourceSize The size in bytes of SourceBuffer. \r
- @param ImageHandle Pointer to the returned image handle that is \r
- created when the image is successfully loaded. \r
-\r
- @retval EFI_SUCCESS The image was loaded into memory. \r
- @retval EFI_NOT_FOUND The FilePath was not found. \r
- @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value. \r
- @retval EFI_UNSUPPORTED The image type is not supported, or the device \r
- path cannot be parsed to locate the proper \r
- protocol for loading the file. \r
- @retval EFI_OUT_OF_RESOURCES Image was not loaded due to insufficient \r
+ @param BootPolicy If TRUE, indicates that the request originates\r
+ from the boot manager, and that the boot\r
+ manager is attempting to load FilePath as a\r
+ boot selection.\r
+ @param ParentImageHandle The caller's image handle.\r
+ @param FilePath The specific file path from which the image is\r
+ loaded.\r
+ @param SourceBuffer If not NULL, a pointer to the memory location\r
+ containing a copy of the image to be loaded.\r
+ @param SourceSize The size in bytes of SourceBuffer.\r
+ @param ImageHandle Pointer to the returned image handle that is\r
+ created when the image is successfully loaded.\r
+\r
+ @retval EFI_SUCCESS The image was loaded into memory.\r
+ @retval EFI_NOT_FOUND The FilePath was not found.\r
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value.\r
+ @retval EFI_UNSUPPORTED The image type is not supported, or the device\r
+ path cannot be parsed to locate the proper\r
+ protocol for loading the file.\r
+ @retval EFI_OUT_OF_RESOURCES Image was not loaded due to insufficient\r
resources.\r
+ @retval EFI_LOAD_ERROR Image was not loaded because the image format was corrupt or not\r
+ understood.\r
+ @retval EFI_DEVICE_ERROR Image was not loaded because the device returned a read error.\r
+ @retval EFI_ACCESS_DENIED Image was not loaded because the platform policy prohibits the\r
+ image from being loaded. NULL is returned in *ImageHandle.\r
+ @retval EFI_SECURITY_VIOLATION Image was loaded and an ImageHandle was created with a\r
+ valid EFI_LOADED_IMAGE_PROTOCOL. However, the current\r
+ platform policy specifies that the image should not be started.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreLoadImage (\r
- IN BOOLEAN BootPolicy,\r
- IN EFI_HANDLE ParentImageHandle,\r
- IN EFI_DEVICE_PATH_PROTOCOL *FilePath,\r
- IN VOID *SourceBuffer OPTIONAL,\r
- IN UINTN SourceSize,\r
- OUT EFI_HANDLE *ImageHandle\r
- )\r
-;\r
+ IN BOOLEAN BootPolicy,\r
+ IN EFI_HANDLE ParentImageHandle,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *FilePath,\r
+ IN VOID *SourceBuffer OPTIONAL,\r
+ IN UINTN SourceSize,\r
+ OUT EFI_HANDLE *ImageHandle\r
+ );\r
\r
\r
\r
/**\r
Unloads an image.\r
\r
- @param ImageHandle Handle that identifies the image to be \r
- unloaded. \r
+ @param ImageHandle Handle that identifies the image to be\r
+ unloaded.\r
\r
- @retval EFI_SUCCESS The image has been unloaded. \r
- @retval EFI_UNSUPPORTED The image has been sarted, and does not support \r
- unload. \r
+ @retval EFI_SUCCESS The image has been unloaded.\r
+ @retval EFI_UNSUPPORTED The image has been started, and does not support\r
+ unload.\r
@retval EFI_INVALID_PARAMPETER ImageHandle is not a valid image handle.\r
\r
**/\r
EFIAPI\r
CoreUnloadImage (\r
IN EFI_HANDLE ImageHandle\r
- )\r
-;\r
+ );\r
\r
\r
\r
/**\r
Transfer control to a loaded image's entry point.\r
\r
- @param ImageHandle Handle of image to be started. \r
- @param ExitDataSize Pointer of the size to ExitData \r
- @param ExitData Pointer to a pointer to a data buffer that \r
- includes a Null-terminated Unicode string, \r
- optionally followed by additional binary data. \r
- The string is a description that the caller may \r
- use to further indicate the reason for the \r
- image's exit. \r
-\r
- @retval EFI_INVALID_PARAMETER Invalid parameter \r
- @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate \r
- @retval EFI_SUCCESS Successfully transfer control to the image's \r
+ @param ImageHandle Handle of image to be started.\r
+ @param ExitDataSize Pointer of the size to ExitData\r
+ @param ExitData Pointer to a pointer to a data buffer that\r
+ includes a Null-terminated string,\r
+ optionally followed by additional binary data.\r
+ The string is a description that the caller may\r
+ use to further indicate the reason for the\r
+ image's exit.\r
+\r
+ @retval EFI_INVALID_PARAMETER Invalid parameter\r
+ @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate\r
+ @retval EFI_SECURITY_VIOLATION The current platform policy specifies that the image should not be started.\r
+ @retval EFI_SUCCESS Successfully transfer control to the image's\r
entry point.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreStartImage (\r
- IN EFI_HANDLE ImageHandle,\r
- OUT UINTN *ExitDataSize,\r
- OUT CHAR16 **ExitData OPTIONAL\r
- )\r
-;\r
+ IN EFI_HANDLE ImageHandle,\r
+ OUT UINTN *ExitDataSize,\r
+ OUT CHAR16 **ExitData OPTIONAL\r
+ );\r
\r
\r
\r
/**\r
Terminates the currently loaded EFI image and returns control to boot services.\r
\r
- @param ImageHandle Handle that identifies the image. This \r
- parameter is passed to the image on entry. \r
- @param Status The image's exit code. \r
- @param ExitDataSize The size, in bytes, of ExitData. Ignored if \r
- ExitStatus is EFI_SUCCESS. \r
- @param ExitData Pointer to a data buffer that includes a \r
- Null-terminated Unicode string, optionally \r
- followed by additional binary data. The string \r
- is a description that the caller may use to \r
- further indicate the reason for the image's \r
- exit. \r
-\r
- @retval EFI_INVALID_PARAMETER Image handle is NULL or it is not current \r
- image. \r
- @retval EFI_SUCCESS Successfully terminates the currently loaded \r
- EFI image. \r
- @retval EFI_ACCESS_DENIED Should never reach there. \r
+ @param ImageHandle Handle that identifies the image. This\r
+ parameter is passed to the image on entry.\r
+ @param Status The image's exit code.\r
+ @param ExitDataSize The size, in bytes, of ExitData. Ignored if\r
+ ExitStatus is EFI_SUCCESS.\r
+ @param ExitData Pointer to a data buffer that includes a\r
+ Null-terminated Unicode string, optionally\r
+ followed by additional binary data. The string\r
+ is a description that the caller may use to\r
+ further indicate the reason for the image's\r
+ exit.\r
+\r
+ @retval EFI_INVALID_PARAMETER Image handle is NULL or it is not current\r
+ image.\r
+ @retval EFI_SUCCESS Successfully terminates the currently loaded\r
+ EFI image.\r
+ @retval EFI_ACCESS_DENIED Should never reach there.\r
@retval EFI_OUT_OF_RESOURCES Could not allocate pool\r
\r
**/\r
IN EFI_STATUS Status,\r
IN UINTN ExitDataSize,\r
IN CHAR16 *ExitData OPTIONAL\r
- )\r
-;\r
+ );\r
\r
\r
\r
/**\r
- Creates a general-purpose event structure.\r
+ Creates an event.\r
\r
- @param Type The type of event to create and its mode and \r
- attributes \r
- @param NotifyTpl The task priority level of event notifications \r
- @param NotifyFunction Pointer to the events notification function \r
- @param NotifyContext Pointer to the notification functions context; \r
- corresponds to parameter "Context" in the \r
- notification function \r
- @param Event Pointer to the newly created event if the call \r
- succeeds; undefined otherwise \r
+ @param Type The type of event to create and its mode and\r
+ attributes\r
+ @param NotifyTpl The task priority level of event notifications\r
+ @param NotifyFunction Pointer to the events notification function\r
+ @param NotifyContext Pointer to the notification functions context;\r
+ corresponds to parameter "Context" in the\r
+ notification function\r
+ @param Event Pointer to the newly created event if the call\r
+ succeeds; undefined otherwise\r
\r
- @retval EFI_SUCCESS The event structure was created \r
- @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value \r
+ @retval EFI_SUCCESS The event structure was created\r
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value\r
@retval EFI_OUT_OF_RESOURCES The event could not be allocated\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreCreateEvent (\r
- IN UINT32 Type,\r
- IN EFI_TPL NotifyTpl,\r
- IN EFI_EVENT_NOTIFY NotifyFunction,\r
- IN VOID *NotifyContext,\r
- OUT EFI_EVENT *Event\r
- )\r
-;\r
+ IN UINT32 Type,\r
+ IN EFI_TPL NotifyTpl,\r
+ IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL\r
+ IN VOID *NotifyContext, OPTIONAL\r
+ OUT EFI_EVENT *Event\r
+ );\r
\r
\r
\r
/**\r
- Creates a general-purpose event structure\r
+ Creates an event in a group.\r
+\r
+ @param Type The type of event to create and its mode and\r
+ attributes\r
+ @param NotifyTpl The task priority level of event notifications\r
+ @param NotifyFunction Pointer to the events notification function\r
+ @param NotifyContext Pointer to the notification functions context;\r
+ corresponds to parameter "Context" in the\r
+ notification function\r
+ @param EventGroup GUID for EventGroup if NULL act the same as\r
+ gBS->CreateEvent().\r
+ @param Event Pointer to the newly created event if the call\r
+ succeeds; undefined otherwise\r
\r
- @param Type The type of event to create and its mode and \r
- attributes \r
- @param NotifyTpl The task priority level of event notifications \r
- @param NotifyFunction Pointer to the events notification function \r
- @param NotifyContext Pointer to the notification functions context; \r
- corresponds to parameter "Context" in the \r
- notification function \r
- @param EventGroup GUID for EventGroup if NULL act the same as \r
- gBS->CreateEvent(). \r
- @param Event Pointer to the newly created event if the call \r
- succeeds; undefined otherwise \r
-\r
- @retval EFI_SUCCESS The event structure was created \r
- @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value \r
+ @retval EFI_SUCCESS The event structure was created\r
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value\r
@retval EFI_OUT_OF_RESOURCES The event could not be allocated\r
\r
**/\r
IN CONST VOID *NotifyContext, OPTIONAL\r
IN CONST EFI_GUID *EventGroup, OPTIONAL\r
OUT EFI_EVENT *Event\r
- )\r
-;\r
+ );\r
\r
+/**\r
+ Creates a general-purpose event structure\r
\r
+ @param Type The type of event to create and its mode and\r
+ attributes\r
+ @param NotifyTpl The task priority level of event notifications\r
+ @param NotifyFunction Pointer to the events notification function\r
+ @param NotifyContext Pointer to the notification functions context;\r
+ corresponds to parameter "Context" in the\r
+ notification function\r
+ @param EventGroup GUID for EventGroup if NULL act the same as\r
+ gBS->CreateEvent().\r
+ @param Event Pointer to the newly created event if the call\r
+ succeeds; undefined otherwise\r
+\r
+ @retval EFI_SUCCESS The event structure was created\r
+ @retval EFI_INVALID_PARAMETER One of the parameters has an invalid value\r
+ @retval EFI_OUT_OF_RESOURCES The event could not be allocated\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoreCreateEventInternal (\r
+ IN UINT32 Type,\r
+ IN EFI_TPL NotifyTpl,\r
+ IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL\r
+ IN CONST VOID *NotifyContext, OPTIONAL\r
+ IN CONST EFI_GUID *EventGroup, OPTIONAL\r
+ OUT EFI_EVENT *Event\r
+ );\r
\r
/**\r
Sets the type of timer and the trigger time for a timer event.\r
\r
- @param UserEvent The timer event that is to be signaled at the \r
- specified time \r
- @param Type The type of time that is specified in \r
- TriggerTime \r
- @param TriggerTime The number of 100ns units until the timer \r
- expires \r
+ @param UserEvent The timer event that is to be signaled at the\r
+ specified time\r
+ @param Type The type of time that is specified in\r
+ TriggerTime\r
+ @param TriggerTime The number of 100ns units until the timer\r
+ expires\r
\r
- @retval EFI_SUCCESS The event has been set to be signaled at the \r
- requested time \r
+ @retval EFI_SUCCESS The event has been set to be signaled at the\r
+ requested time\r
@retval EFI_INVALID_PARAMETER Event or Type is not valid\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreSetTimer (\r
- IN EFI_EVENT Event,\r
+ IN EFI_EVENT UserEvent,\r
IN EFI_TIMER_DELAY Type,\r
IN UINT64 TriggerTime\r
- )\r
-;\r
+ );\r
\r
\r
\r
/**\r
- Signals the event. Queues the event to be notified if needed\r
+ Signals the event. Queues the event to be notified if needed.\r
\r
- @param UserEvent The event to signal \r
+ @param UserEvent The event to signal .\r
\r
- @retval EFI_INVALID_PARAMETER Parameters are not valid. \r
+ @retval EFI_INVALID_PARAMETER Parameters are not valid.\r
@retval EFI_SUCCESS The event was signaled.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreSignalEvent (\r
- IN EFI_EVENT Event\r
- )\r
-;\r
+ IN EFI_EVENT UserEvent\r
+ );\r
\r
\r
\r
/**\r
Stops execution until an event is signaled.\r
\r
- @param NumberOfEvents The number of events in the UserEvents array \r
- @param UserEvents An array of EFI_EVENT \r
- @param UserIndex Pointer to the index of the event which \r
- satisfied the wait condition \r
+ @param NumberOfEvents The number of events in the UserEvents array\r
+ @param UserEvents An array of EFI_EVENT\r
+ @param UserIndex Pointer to the index of the event which\r
+ satisfied the wait condition\r
\r
- @retval EFI_SUCCESS The event indicated by Index was signaled. \r
- @retval EFI_INVALID_PARAMETER The event indicated by Index has a notification \r
- function or Event was not a valid type \r
+ @retval EFI_SUCCESS The event indicated by Index was signaled.\r
+ @retval EFI_INVALID_PARAMETER The event indicated by Index has a notification\r
+ function or Event was not a valid type\r
@retval EFI_UNSUPPORTED The current TPL is not TPL_APPLICATION\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreWaitForEvent (\r
- IN UINTN NumberOfEvents,\r
- IN EFI_EVENT *UserEvents,\r
- OUT UINTN *UserIndex\r
- )\r
-;\r
+ IN UINTN NumberOfEvents,\r
+ IN EFI_EVENT *UserEvents,\r
+ OUT UINTN *UserIndex\r
+ );\r
\r
\r
\r
/**\r
Closes an event and frees the event structure.\r
\r
- @param UserEvent Event to close \r
+ @param UserEvent Event to close\r
\r
- @retval EFI_INVALID_PARAMETER Parameters are not valid. \r
+ @retval EFI_INVALID_PARAMETER Parameters are not valid.\r
@retval EFI_SUCCESS The event has been closed\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreCloseEvent (\r
- IN EFI_EVENT Event\r
- )\r
-;\r
+ IN EFI_EVENT UserEvent\r
+ );\r
\r
\r
\r
/**\r
Check the status of an event.\r
\r
- @param UserEvent The event to check \r
+ @param UserEvent The event to check\r
\r
- @retval EFI_SUCCESS The event is in the signaled state \r
- @retval EFI_NOT_READY The event is not in the signaled state \r
+ @retval EFI_SUCCESS The event is in the signaled state\r
+ @retval EFI_NOT_READY The event is not in the signaled state\r
@retval EFI_INVALID_PARAMETER Event is of type EVT_NOTIFY_SIGNAL\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CoreCheckEvent (\r
- IN EFI_EVENT Event\r
- )\r
-;\r
+ IN EFI_EVENT UserEvent\r
+ );\r
\r
\r
/**\r
Adds reserved memory, system memory, or memory-mapped I/O resources to the\r
global coherency domain of the processor.\r
\r
- @param GcdMemoryType Memory type of the memory space. \r
- @param BaseAddress Base address of the memory space. \r
- @param Length Length of the memory space. \r
- @param Capabilities alterable attributes of the memory space. \r
+ @param GcdMemoryType Memory type of the memory space.\r
+ @param BaseAddress Base address of the memory space.\r
+ @param Length Length of the memory space.\r
+ @param Capabilities alterable attributes of the memory space.\r
\r
@retval EFI_SUCCESS Merged this memory space into GCD map.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreAddMemorySpace (\r
IN EFI_GCD_MEMORY_TYPE GcdMemoryType,\r
IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
IN UINT64 Length,\r
IN UINT64 Capabilities\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Allocates nonexistent memory, reserved memory, system memory, or memorymapped\r
I/O resources from the global coherency domain of the processor.\r
\r
- @param GcdAllocateType The type of allocate operation \r
- @param GcdMemoryType The desired memory type \r
- @param Alignment Align with 2^Alignment \r
- @param Length Length to allocate \r
- @param BaseAddress Base address to allocate \r
- @param ImageHandle The image handle consume the allocated space. \r
- @param DeviceHandle The device handle consume the allocated space. \r
+ @param GcdAllocateType The type of allocate operation\r
+ @param GcdMemoryType The desired memory type\r
+ @param Alignment Align with 2^Alignment\r
+ @param Length Length to allocate\r
+ @param BaseAddress Base address to allocate\r
+ @param ImageHandle The image handle consume the allocated space.\r
+ @param DeviceHandle The device handle consume the allocated space.\r
\r
- @retval EFI_INVALID_PARAMETER Invalid parameter. \r
- @retval EFI_NOT_FOUND No descriptor contains the desired space. \r
+ @retval EFI_INVALID_PARAMETER Invalid parameter.\r
+ @retval EFI_NOT_FOUND No descriptor contains the desired space.\r
@retval EFI_SUCCESS Memory space successfully allocated.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreAllocateMemorySpace (\r
IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,\r
IN EFI_GCD_MEMORY_TYPE GcdMemoryType,\r
IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_HANDLE DeviceHandle OPTIONAL\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Frees nonexistent memory, reserved memory, system memory, or memory-mapped\r
I/O resources from the global coherency domain of the processor.\r
\r
- @param BaseAddress Base address of the memory space. \r
- @param Length Length of the memory space. \r
+ @param BaseAddress Base address of the memory space.\r
+ @param Length Length of the memory space.\r
\r
@retval EFI_SUCCESS Space successfully freed.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreFreeMemorySpace (\r
IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
IN UINT64 Length\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Removes reserved memory, system memory, or memory-mapped I/O resources from\r
the global coherency domain of the processor.\r
\r
- @param BaseAddress Base address of the memory space. \r
- @param Length Length of the memory space. \r
+ @param BaseAddress Base address of the memory space.\r
+ @param Length Length of the memory space.\r
\r
@retval EFI_SUCCESS Successfully remove a segment of memory space.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreRemoveMemorySpace (\r
IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
IN UINT64 Length\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Retrieves the descriptor for a memory region containing a specified address.\r
\r
- @param BaseAddress Specified start address \r
- @param Descriptor Specified length \r
+ @param BaseAddress Specified start address\r
+ @param Descriptor Specified length\r
\r
- @retval EFI_INVALID_PARAMETER Invalid parameter \r
+ @retval EFI_INVALID_PARAMETER Invalid parameter\r
@retval EFI_SUCCESS Successfully get memory space descriptor.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreGetMemorySpaceDescriptor (\r
IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Modifies the attributes for a memory region in the global coherency domain of the\r
processor.\r
\r
- @param BaseAddress Specified start address \r
- @param Length Specified length \r
- @param Attributes Specified attributes \r
+ @param BaseAddress Specified start address\r
+ @param Length Specified length\r
+ @param Attributes Specified attributes\r
\r
- @retval EFI_SUCCESS Successfully set attribute of a segment of \r
- memory space.\r
+ @retval EFI_SUCCESS The attributes were set for the memory region.\r
+ @retval EFI_INVALID_PARAMETER Length is zero.\r
+ @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory\r
+ resource range specified by BaseAddress and Length.\r
+ @retval EFI_UNSUPPORTED The bit mask of attributes is not support for the memory resource\r
+ range specified by BaseAddress and Length.\r
+ @retval EFI_ACCESS_DENIED The attributes for the memory resource range specified by\r
+ BaseAddress and Length cannot be modified.\r
+ @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the attributes of\r
+ the memory resource range.\r
+ @retval EFI_NOT_AVAILABLE_YET The attributes cannot be set because CPU architectural protocol is\r
+ not available yet.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreSetMemorySpaceAttributes (\r
IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
IN UINT64 Length,\r
IN UINT64 Attributes\r
- )\r
-;\r
+ );\r
+\r
+\r
+/**\r
+ Modifies the capabilities for a memory region in the global coherency domain of the\r
+ processor.\r
+\r
+ @param BaseAddress The physical address that is the start address of a memory region.\r
+ @param Length The size in bytes of the memory region.\r
+ @param Capabilities The bit mask of capabilities that the memory region supports.\r
+\r
+ @retval EFI_SUCCESS The capabilities were set for the memory region.\r
+ @retval EFI_INVALID_PARAMETER Length is zero.\r
+ @retval EFI_UNSUPPORTED The capabilities specified by Capabilities do not include the\r
+ memory region attributes currently in use.\r
+ @retval EFI_ACCESS_DENIED The capabilities for the memory resource range specified by\r
+ BaseAddress and Length cannot be modified.\r
+ @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the capabilities\r
+ of the memory resource range.\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoreSetMemorySpaceCapabilities (\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN UINT64 Capabilities\r
+ );\r
\r
\r
/**\r
Returns a map of the memory resources in the global coherency domain of the\r
processor.\r
\r
- @param NumberOfDescriptors Number of descriptors. \r
- @param MemorySpaceMap Descriptor array \r
+ @param NumberOfDescriptors Number of descriptors.\r
+ @param MemorySpaceMap Descriptor array\r
\r
- @retval EFI_INVALID_PARAMETER Invalid parameter \r
- @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate \r
+ @retval EFI_INVALID_PARAMETER Invalid parameter\r
+ @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate\r
@retval EFI_SUCCESS Successfully get memory space map.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreGetMemorySpaceMap (\r
OUT UINTN *NumberOfDescriptors,\r
OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Adds reserved I/O or I/O resources to the global coherency domain of the processor.\r
\r
- @param GcdIoType IO type of the segment. \r
- @param BaseAddress Base address of the segment. \r
- @param Length Length of the segment. \r
+ @param GcdIoType IO type of the segment.\r
+ @param BaseAddress Base address of the segment.\r
+ @param Length Length of the segment.\r
\r
- @retval EFI_SUCCESS Merged this segment into GCD map. \r
+ @retval EFI_SUCCESS Merged this segment into GCD map.\r
@retval EFI_INVALID_PARAMETER Parameter not valid\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreAddIoSpace (\r
IN EFI_GCD_IO_TYPE GcdIoType,\r
IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
IN UINT64 Length\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency\r
domain of the processor.\r
\r
- @param GcdAllocateType The type of allocate operation \r
- @param GcdIoType The desired IO type \r
- @param Alignment Align with 2^Alignment \r
- @param Length Length to allocate \r
- @param BaseAddress Base address to allocate \r
- @param ImageHandle The image handle consume the allocated space. \r
- @param DeviceHandle The device handle consume the allocated space. \r
+ @param GcdAllocateType The type of allocate operation\r
+ @param GcdIoType The desired IO type\r
+ @param Alignment Align with 2^Alignment\r
+ @param Length Length to allocate\r
+ @param BaseAddress Base address to allocate\r
+ @param ImageHandle The image handle consume the allocated space.\r
+ @param DeviceHandle The device handle consume the allocated space.\r
\r
- @retval EFI_INVALID_PARAMETER Invalid parameter. \r
- @retval EFI_NOT_FOUND No descriptor contains the desired space. \r
+ @retval EFI_INVALID_PARAMETER Invalid parameter.\r
+ @retval EFI_NOT_FOUND No descriptor contains the desired space.\r
@retval EFI_SUCCESS IO space successfully allocated.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreAllocateIoSpace (\r
IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,\r
IN EFI_GCD_IO_TYPE GcdIoType,\r
IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_HANDLE DeviceHandle OPTIONAL\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency\r
domain of the processor.\r
\r
- @param BaseAddress Base address of the segment. \r
- @param Length Length of the segment. \r
+ @param BaseAddress Base address of the segment.\r
+ @param Length Length of the segment.\r
\r
@retval EFI_SUCCESS Space successfully freed.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreFreeIoSpace (\r
IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
IN UINT64 Length\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Removes reserved I/O or I/O resources from the global coherency domain of the\r
processor.\r
\r
- @param BaseAddress Base address of the segment. \r
- @param Length Length of the segment. \r
+ @param BaseAddress Base address of the segment.\r
+ @param Length Length of the segment.\r
\r
@retval EFI_SUCCESS Successfully removed a segment of IO space.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreRemoveIoSpace (\r
IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
IN UINT64 Length\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Retrieves the descriptor for an I/O region containing a specified address.\r
\r
- @param BaseAddress Specified start address \r
- @param Descriptor Specified length \r
+ @param BaseAddress Specified start address\r
+ @param Descriptor Specified length\r
\r
- @retval EFI_INVALID_PARAMETER Descriptor is NULL. \r
+ @retval EFI_INVALID_PARAMETER Descriptor is NULL.\r
@retval EFI_SUCCESS Successfully get the IO space descriptor.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreGetIoSpaceDescriptor (\r
IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Returns a map of the I/O resources in the global coherency domain of the processor.\r
\r
- @param NumberOfDescriptors Number of descriptors. \r
- @param IoSpaceMap Descriptor array \r
+ @param NumberOfDescriptors Number of descriptors.\r
+ @param IoSpaceMap Descriptor array\r
\r
- @retval EFI_INVALID_PARAMETER Invalid parameter \r
- @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate \r
+ @retval EFI_INVALID_PARAMETER Invalid parameter\r
+ @retval EFI_OUT_OF_RESOURCES No enough buffer to allocate\r
@retval EFI_SUCCESS Successfully get IO space map.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreGetIoSpaceMap (\r
OUT UINTN *NumberOfDescriptors,\r
OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
will be called, and when the Bds() exits the Dispatcher will be called\r
again.\r
\r
- NONE\r
-\r
- @retval EFI_ALREADY_STARTED The DXE Dispatcher is already running \r
- @retval EFI_NOT_FOUND No DXE Drivers were dispatched \r
- @retval EFI_SUCCESS One or more DXE Drivers were dispatched \r
+ @retval EFI_ALREADY_STARTED The DXE Dispatcher is already running\r
+ @retval EFI_NOT_FOUND No DXE Drivers were dispatched\r
+ @retval EFI_SUCCESS One or more DXE Drivers were dispatched\r
\r
**/\r
-EFI_DXESERVICE\r
EFI_STATUS\r
EFIAPI\r
CoreDispatcher (\r
VOID\r
- )\r
-;\r
+ );\r
\r
/**\r
Check every driver and locate a matching one. If the driver is found, the Unrequested\r
state flag is cleared.\r
\r
- @param FirmwareVolumeHandle The handle of the Firmware Volume that contains \r
- the firmware file specified by DriverName. \r
- @param DriverName The Driver name to put in the Dependent state. \r
+ @param FirmwareVolumeHandle The handle of the Firmware Volume that contains\r
+ the firmware file specified by DriverName.\r
+ @param DriverName The Driver name to put in the Dependent state.\r
\r
- @retval EFI_SUCCESS The DriverName was found and it's SOR bit was \r
- cleared \r
- @retval EFI_NOT_FOUND The DriverName does not exist or it's SOR bit \r
- was not set. \r
+ @retval EFI_SUCCESS The DriverName was found and it's SOR bit was\r
+ cleared\r
+ @retval EFI_NOT_FOUND The DriverName does not exist or it's SOR bit was\r
+ not set.\r
\r
**/\r
-EFI_DXESERVICE\r
EFI_STATUS\r
EFIAPI\r
CoreSchedule (\r
IN EFI_HANDLE FirmwareVolumeHandle,\r
IN EFI_GUID *DriverName\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
- Convert a driver from the Untrused back to the Scheduled state\r
+ Convert a driver from the Untrused back to the Scheduled state.\r
\r
- @param FirmwareVolumeHandle The handle of the Firmware Volume that contains \r
- the firmware file specified by DriverName. \r
- @param DriverName The Driver name to put in the Scheduled state \r
+ @param FirmwareVolumeHandle The handle of the Firmware Volume that contains\r
+ the firmware file specified by DriverName.\r
+ @param DriverName The Driver name to put in the Scheduled state\r
\r
- @retval EFI_SUCCESS The file was found in the untrusted state, and \r
- it was promoted to the trusted state. \r
- @retval EFI_NOT_FOUND The file was not found in the untrusted state. \r
+ @retval EFI_SUCCESS The file was found in the untrusted state, and it\r
+ was promoted to the trusted state.\r
+ @retval EFI_NOT_FOUND The file was not found in the untrusted state.\r
\r
**/\r
-EFI_DXESERVICE\r
EFI_STATUS\r
EFIAPI\r
CoreTrust (\r
IN EFI_HANDLE FirmwareVolumeHandle,\r
IN EFI_GUID *DriverName\r
- )\r
-;\r
-\r
-\r
-/**\r
- Helper function called as part of the code needed\r
- to allocate the proper sized buffer for various\r
- EFI interfaces.\r
-\r
- @param Status Current status \r
- @param Buffer Current allocated buffer, or NULL \r
- @param BufferSize Current buffer size needed \r
-\r
- @retval TRUE if the buffer was reallocated and the caller \r
- should try the API again. \r
- @retval FALSE buffer could not be allocated and the caller \r
- should not try the API again.\r
-\r
-**/\r
-BOOLEAN\r
-CoreGrowBuffer (\r
- IN OUT EFI_STATUS *Status,\r
- IN OUT VOID **Buffer,\r
- IN UINTN BufferSize\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
libraries, and registers two notification functions. These notification\r
functions are responsible for building the FV stack dynamically.\r
\r
- @param ImageHandle The image handle. \r
- @param SystemTable The system table. \r
+ @param ImageHandle The image handle.\r
+ @param SystemTable The system table.\r
\r
@retval EFI_SUCCESS Function successfully returned.\r
\r
FwVolDriverInit (\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
InitializeSectionExtraction (\r
IN EFI_HANDLE ImageHandle,\r
IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
particular, it can be called by BDS to process a single firmware\r
volume found in a capsule.\r
\r
- @param FvHeader pointer to a firmware volume header \r
- @param Size the size of the buffer pointed to by FvHeader \r
- @param FVProtocolHandle the handle on which a firmware volume protocol \r
- was produced for the firmware volume passed in. \r
+ @param FvHeader pointer to a firmware volume header\r
+ @param Size the size of the buffer pointed to by FvHeader\r
+ @param FVProtocolHandle the handle on which a firmware volume protocol\r
+ was produced for the firmware volume passed in.\r
\r
- @retval EFI_OUT_OF_RESOURCES if an FVB could not be produced due to lack of \r
- system resources \r
- @retval EFI_VOLUME_CORRUPTED if the volume was corrupted \r
- @retval EFI_SUCCESS a firmware volume protocol was produced for the \r
+ @retval EFI_OUT_OF_RESOURCES if an FVB could not be produced due to lack of\r
+ system resources\r
+ @retval EFI_VOLUME_CORRUPTED if the volume was corrupted\r
+ @retval EFI_SUCCESS a firmware volume protocol was produced for the\r
firmware volume\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
CoreProcessFirmwareVolume (\r
- IN VOID *FvHeader,\r
- IN UINTN Size, \r
- OUT EFI_HANDLE *FVProtocolHandle\r
- )\r
-;\r
+ IN VOID *FvHeader,\r
+ IN UINTN Size,\r
+ OUT EFI_HANDLE *FVProtocolHandle\r
+ );\r
\r
//\r
//Functions used during debug buils\r
\r
/**\r
Displays Architectural protocols that were not loaded and are required for DXE\r
- core to function Only used in Debug Builds.\r
+ core to function. Only used in Debug Builds.\r
\r
**/\r
VOID\r
CoreDisplayMissingArchProtocols (\r
VOID\r
- )\r
-;\r
- \r
+ );\r
+\r
\r
/**\r
Traverse the discovered list for any drivers that were discovered but not loaded\r
VOID\r
CoreDisplayDiscoveredNotDispatched (\r
VOID\r
- )\r
-;\r
-\r
-\r
-/**\r
- Place holder function until all the Boot Services and Runtime Services are available.\r
-\r
-\r
- @return EFI_NOT_AVAILABLE_YET\r
+ );\r
\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CoreEfiNotAvailableYetArg0 (\r
- VOID\r
- )\r
-;\r
\r
\r
/**\r
- Place holder function until all the Boot Services and Runtime Services are available.\r
+ Place holder function until all the Boot Services and Runtime Services are\r
+ available.\r
\r
- @param Arg1 Undefined \r
+ @param Arg1 Undefined\r
\r
@return EFI_NOT_AVAILABLE_YET\r
\r
EFIAPI\r
CoreEfiNotAvailableYetArg1 (\r
UINTN Arg1\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Place holder function until all the Boot Services and Runtime Services are available.\r
\r
- @param Arg1 Undefined \r
- @param Arg2 Undefined \r
+ @param Arg1 Undefined\r
+ @param Arg2 Undefined\r
\r
@return EFI_NOT_AVAILABLE_YET\r
\r
CoreEfiNotAvailableYetArg2 (\r
UINTN Arg1,\r
UINTN Arg2\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Place holder function until all the Boot Services and Runtime Services are available.\r
\r
- @param Arg1 Undefined \r
- @param Arg2 Undefined \r
- @param Arg3 Undefined \r
+ @param Arg1 Undefined\r
+ @param Arg2 Undefined\r
+ @param Arg3 Undefined\r
\r
@return EFI_NOT_AVAILABLE_YET\r
\r
UINTN Arg1,\r
UINTN Arg2,\r
UINTN Arg3\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Place holder function until all the Boot Services and Runtime Services are available.\r
\r
- @param Arg1 Undefined \r
- @param Arg2 Undefined \r
- @param Arg3 Undefined \r
- @param Arg4 Undefined \r
+ @param Arg1 Undefined\r
+ @param Arg2 Undefined\r
+ @param Arg3 Undefined\r
+ @param Arg4 Undefined\r
\r
@return EFI_NOT_AVAILABLE_YET\r
\r
UINTN Arg2,\r
UINTN Arg3,\r
UINTN Arg4\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
Place holder function until all the Boot Services and Runtime Services are available.\r
\r
- @param Arg1 Undefined \r
- @param Arg2 Undefined \r
- @param Arg3 Undefined \r
- @param Arg4 Undefined \r
- @param Arg5 Undefined \r
+ @param Arg1 Undefined\r
+ @param Arg2 Undefined\r
+ @param Arg3 Undefined\r
+ @param Arg4 Undefined\r
+ @param Arg5 Undefined\r
\r
@return EFI_NOT_AVAILABLE_YET\r
\r
UINTN Arg3,\r
UINTN Arg4,\r
UINTN Arg5\r
- )\r
-;\r
-\r
-\r
-/**\r
- Searches for a Protocol Interface passed from PEI through a HOB.\r
-\r
- @param ProtocolGuid The Protocol GUID to search for in the HOB List \r
- @param Interface A pointer to the interface for the Protocol GUID \r
-\r
- @retval EFI_SUCCESS The Protocol GUID was found and its interface is \r
- returned in Interface \r
- @retval EFI_NOT_FOUND The Protocol GUID was not found in the HOB List\r
-\r
-**/\r
-EFI_STATUS\r
-CoreGetPeiProtocol (\r
- IN EFI_GUID *ProtocolGuid,\r
- IN VOID **Interface\r
- )\r
-;\r
+ );\r
\r
\r
/**\r
buffer that is required to decompress the\r
compressed buffer specified by Source and\r
SourceSize.\r
- \r
+\r
@retval EFI_SUCCESS The size of the uncompressed data was returned in\r
DestinationSize and the size of the scratch buffer\r
was returned in ScratchSize.\r
\r
**/\r
EFI_STATUS\r
+EFIAPI\r
DxeMainUefiDecompressGetInfo (\r
IN EFI_DECOMPRESS_PROTOCOL *This,\r
IN VOID *Source,\r
This protocol is designed so that the decompression algorithm can be\r
implemented without using any memory services. As a result, the Decompress()\r
Function is not allowed to call AllocatePool() or AllocatePages() in its\r
- implementation. It is the caller¡¯s responsibility to allocate and free the\r
+ implementation. It is the caller's responsibility to allocate and free the\r
Destination and Scratch buffers.\r
If the compressed source data specified by Source and SourceSize is\r
sucessfully decompressed into Destination, then EFI_SUCCESS is returned. If\r
the decompression.\r
@param ScratchSize The size of scratch buffer. The size of the\r
scratch buffer needed is obtained from GetInfo().\r
- \r
+\r
@retval EFI_SUCCESS Decompression completed successfully, and the\r
uncompressed buffer is returned in Destination.\r
@retval EFI_INVALID_PARAMETER The source buffer specified by Source and\r
EFI_STATUS\r
EFIAPI\r
DxeMainUefiDecompress (\r
- IN EFI_DECOMPRESS_PROTOCOL *This,\r
+ IN EFI_DECOMPRESS_PROTOCOL *This,\r
IN VOID *Source,\r
IN UINT32 SourceSize,\r
IN OUT VOID *Destination,\r
SEP member function. This function creates and returns a new section stream\r
handle to represent the new section stream.\r
\r
- @param SectionStreamLength Size in bytes of the section stream. \r
- @param SectionStream Buffer containing the new section stream. \r
- @param SectionStreamHandle A pointer to a caller allocated UINTN that on \r
- output contains the new section stream handle. \r
+ @param SectionStreamLength Size in bytes of the section stream.\r
+ @param SectionStream Buffer containing the new section stream.\r
+ @param SectionStreamHandle A pointer to a caller allocated UINTN that on\r
+ output contains the new section stream handle.\r
\r
@retval EFI_SUCCESS The section stream is created successfully.\r
- @retval EFI_OUT_OF_RESOURCES memory allocation failed. \r
- @retval EFI_INVALID_PARAMETER Section stream does not end concident with end \r
+ @retval EFI_OUT_OF_RESOURCES memory allocation failed.\r
+ @retval EFI_INVALID_PARAMETER Section stream does not end concident with end\r
of last section.\r
\r
**/\r
non-null on input, then the buffer is caller\r
allocated. If Buffer is NULL, then the buffer\r
is callee allocated. In either case, the\r
- requried buffer size is returned in *BufferSize.\r
+ required buffer size is returned in *BufferSize.\r
@param BufferSize On input, indicates the size of *Buffer if\r
*Buffer is non-null on input. On output,\r
indicates the required size (allocated size if\r
callee allocated) of *Buffer.\r
@param AuthenticationStatus A pointer to a caller-allocated UINT32 that\r
indicates the authentication status of the\r
- output buffer. If the input section¡¯s\r
+ output buffer. If the input section's\r
GuidedSectionHeader.Attributes field\r
has the EFI_GUIDED_SECTION_AUTH_STATUS_VALID\r
bit as clear, AuthenticationStatus must return\r
function returns anything other than\r
EFI_SUCCESS, the value of *AuthenticationStatus\r
is undefined.\r
+ @param IsFfs3Fv Indicates the FV format.\r
\r
@retval EFI_SUCCESS Section was retrieved successfully\r
@retval EFI_PROTOCOL_ERROR A GUID defined section was encountered in the\r
IN UINTN SectionInstance,\r
IN VOID **Buffer,\r
IN OUT UINTN *BufferSize,\r
- OUT UINT32 *AuthenticationStatus\r
+ OUT UINT32 *AuthenticationStatus,\r
+ IN BOOLEAN IsFfs3Fv\r
);\r
\r
\r
/**\r
SEP member function. Deletes an existing section stream\r
\r
- @param StreamHandleToClose Indicates the stream to close \r
+ @param StreamHandleToClose Indicates the stream to close\r
+ @param FreeStreamBuffer TRUE - Need to free stream buffer;\r
+ FALSE - No need to free stream buffer.\r
\r
@retval EFI_SUCCESS The section stream is closed sucessfully.\r
- @retval EFI_OUT_OF_RESOURCES Memory allocation failed. \r
- @retval EFI_INVALID_PARAMETER Section stream does not end concident with end \r
+ @retval EFI_OUT_OF_RESOURCES Memory allocation failed.\r
+ @retval EFI_INVALID_PARAMETER Section stream does not end concident with end\r
of last section.\r
\r
**/\r
EFI_STATUS\r
EFIAPI\r
CloseSectionStream (\r
- IN UINTN StreamHandleToClose\r
+ IN UINTN StreamHandleToClose,\r
+ IN BOOLEAN FreeStreamBuffer\r
+ );\r
+\r
+/**\r
+ Creates and initializes the DebugImageInfo Table. Also creates the configuration\r
+ table and registers it into the system table.\r
+\r
+ Note:\r
+ This function allocates memory, frees it, and then allocates memory at an\r
+ address within the initial allocation. Since this function is called early\r
+ in DXE core initialization (before drivers are dispatched), this should not\r
+ be a problem.\r
+\r
+**/\r
+VOID\r
+CoreInitializeDebugImageInfoTable (\r
+ VOID\r
+ );\r
+\r
+\r
+/**\r
+ Update the CRC32 in the Debug Table.\r
+ Since the CRC32 service is made available by the Runtime driver, we have to\r
+ wait for the Runtime Driver to be installed before the CRC32 can be computed.\r
+ This function is called elsewhere by the core when the runtime architectural\r
+ protocol is produced.\r
+\r
+**/\r
+VOID\r
+CoreUpdateDebugTableCrc32 (\r
+ VOID\r
+ );\r
+\r
+\r
+/**\r
+ Adds a new DebugImageInfo structure to the DebugImageInfo Table. Re-Allocates\r
+ the table if it's not large enough to accomidate another entry.\r
+\r
+ @param ImageInfoType type of debug image information\r
+ @param LoadedImage pointer to the loaded image protocol for the image being\r
+ loaded\r
+ @param ImageHandle image handle for the image being loaded\r
+\r
+**/\r
+VOID\r
+CoreNewDebugImageInfoEntry (\r
+ IN UINT32 ImageInfoType,\r
+ IN EFI_LOADED_IMAGE_PROTOCOL *LoadedImage,\r
+ IN EFI_HANDLE ImageHandle\r
+ );\r
+\r
+\r
+/**\r
+ Removes and frees an entry from the DebugImageInfo Table.\r
+\r
+ @param ImageHandle image handle for the image being unloaded\r
+\r
+**/\r
+VOID\r
+CoreRemoveDebugImageInfoEntry (\r
+ EFI_HANDLE ImageHandle\r
+ );\r
+\r
+\r
+/**\r
+ This routine consumes FV hobs and produces instances of FW_VOL_BLOCK_PROTOCOL as appropriate.\r
+\r
+ @param ImageHandle The image handle.\r
+ @param SystemTable The system table.\r
+\r
+ @retval EFI_SUCCESS Successfully initialized firmware volume block\r
+ driver.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+FwVolBlockDriverInit (\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
+ );\r
+\r
+/**\r
+\r
+ Get FVB authentication status\r
+\r
+ @param FvbProtocol FVB protocol.\r
+\r
+ @return Authentication status.\r
+\r
+**/\r
+UINT32\r
+GetFvbAuthenticationStatus (\r
+ IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *FvbProtocol\r
+ );\r
+\r
+/**\r
+ This routine produces a firmware volume block protocol on a given\r
+ buffer.\r
+\r
+ @param BaseAddress base address of the firmware volume image\r
+ @param Length length of the firmware volume image\r
+ @param ParentHandle handle of parent firmware volume, if this image\r
+ came from an FV image file and section in another firmware\r
+ volume (ala capsules)\r
+ @param AuthenticationStatus Authentication status inherited, if this image\r
+ came from an FV image file and section in another firmware volume.\r
+ @param FvProtocol Firmware volume block protocol produced.\r
+\r
+ @retval EFI_VOLUME_CORRUPTED Volume corrupted.\r
+ @retval EFI_OUT_OF_RESOURCES No enough buffer to be allocated.\r
+ @retval EFI_SUCCESS Successfully produced a FVB protocol on given\r
+ buffer.\r
+\r
+**/\r
+EFI_STATUS\r
+ProduceFVBProtocolOnBuffer (\r
+ IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
+ IN UINT64 Length,\r
+ IN EFI_HANDLE ParentHandle,\r
+ IN UINT32 AuthenticationStatus,\r
+ OUT EFI_HANDLE *FvProtocol OPTIONAL\r
+ );\r
+\r
+\r
+/**\r
+ Raising to the task priority level of the mutual exclusion\r
+ lock, and then acquires ownership of the lock.\r
+\r
+ @param Lock The lock to acquire\r
+\r
+ @return Lock owned\r
+\r
+**/\r
+VOID\r
+CoreAcquireLock (\r
+ IN EFI_LOCK *Lock\r
+ );\r
+\r
+\r
+/**\r
+ Initialize a basic mutual exclusion lock. Each lock\r
+ provides mutual exclusion access at it's task priority\r
+ level. Since there is no-premption (at any TPL) or\r
+ multiprocessor support, acquiring the lock only consists\r
+ of raising to the locks TPL.\r
+\r
+ @param Lock The EFI_LOCK structure to initialize\r
+\r
+ @retval EFI_SUCCESS Lock Owned.\r
+ @retval EFI_ACCESS_DENIED Reentrant Lock Acquisition, Lock not Owned.\r
+\r
+**/\r
+EFI_STATUS\r
+CoreAcquireLockOrFail (\r
+ IN EFI_LOCK *Lock\r
+ );\r
+\r
+\r
+/**\r
+ Releases ownership of the mutual exclusion lock, and\r
+ restores the previous task priority level.\r
+\r
+ @param Lock The lock to release\r
+\r
+ @return Lock unowned\r
+\r
+**/\r
+VOID\r
+CoreReleaseLock (\r
+ IN EFI_LOCK *Lock\r
+ );\r
+\r
+/**\r
+ Read data from Firmware Block by FVB protocol Read.\r
+ The data may cross the multi block ranges.\r
+\r
+ @param Fvb The FW_VOL_BLOCK_PROTOCOL instance from which to read data.\r
+ @param StartLba Pointer to StartLba.\r
+ On input, the start logical block index from which to read.\r
+ On output,the end logical block index after reading.\r
+ @param Offset Pointer to Offset\r
+ On input, offset into the block at which to begin reading.\r
+ On output, offset into the end block after reading.\r
+ @param DataSize Size of data to be read.\r
+ @param Data Pointer to Buffer that the data will be read into.\r
+\r
+ @retval EFI_SUCCESS Successfully read data from firmware block.\r
+ @retval others\r
+**/\r
+EFI_STATUS\r
+ReadFvbData (\r
+ IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *Fvb,\r
+ IN OUT EFI_LBA *StartLba,\r
+ IN OUT UINTN *Offset,\r
+ IN UINTN DataSize,\r
+ OUT UINT8 *Data\r
+ );\r
+\r
+/**\r
+ Given the supplied FW_VOL_BLOCK_PROTOCOL, allocate a buffer for output and\r
+ copy the real length volume header into it.\r
+\r
+ @param Fvb The FW_VOL_BLOCK_PROTOCOL instance from which to\r
+ read the volume header\r
+ @param FwVolHeader Pointer to pointer to allocated buffer in which\r
+ the volume header is returned.\r
+\r
+ @retval EFI_OUT_OF_RESOURCES No enough buffer could be allocated.\r
+ @retval EFI_SUCCESS Successfully read volume header to the allocated\r
+ buffer.\r
+ @retval EFI_INVALID_PARAMETER The FV Header signature is not as expected or\r
+ the file system could not be understood.\r
+\r
+**/\r
+EFI_STATUS\r
+GetFwVolHeader (\r
+ IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *Fvb,\r
+ OUT EFI_FIRMWARE_VOLUME_HEADER **FwVolHeader\r
+ );\r
+\r
+/**\r
+ Verify checksum of the firmware volume header.\r
+\r
+ @param FvHeader Points to the firmware volume header to be checked\r
+\r
+ @retval TRUE Checksum verification passed\r
+ @retval FALSE Checksum verification failed\r
+\r
+**/\r
+BOOLEAN\r
+VerifyFvHeaderChecksum (\r
+ IN EFI_FIRMWARE_VOLUME_HEADER *FvHeader\r
+ );\r
+\r
+/**\r
+ Initialize memory profile.\r
+\r
+ @param HobStart The start address of the HOB.\r
+\r
+**/\r
+VOID\r
+MemoryProfileInit (\r
+ IN VOID *HobStart\r
+ );\r
+\r
+/**\r
+ Install memory profile protocol.\r
+\r
+**/\r
+VOID\r
+MemoryProfileInstallProtocol (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Register image to memory profile.\r
+\r
+ @param DriverEntry Image info.\r
+ @param FileType Image file type.\r
+\r
+ @return EFI_SUCCESS Register successfully.\r
+ @return EFI_UNSUPPORTED Memory profile unsupported,\r
+ or memory profile for the image is not required.\r
+ @return EFI_OUT_OF_RESOURCES No enough resource for this register.\r
+\r
+**/\r
+EFI_STATUS\r
+RegisterMemoryProfileImage (\r
+ IN LOADED_IMAGE_PRIVATE_DATA *DriverEntry,\r
+ IN EFI_FV_FILETYPE FileType\r
+ );\r
+\r
+/**\r
+ Unregister image from memory profile.\r
+\r
+ @param DriverEntry Image info.\r
+\r
+ @return EFI_SUCCESS Unregister successfully.\r
+ @return EFI_UNSUPPORTED Memory profile unsupported,\r
+ or memory profile for the image is not required.\r
+ @return EFI_NOT_FOUND The image is not found.\r
+\r
+**/\r
+EFI_STATUS\r
+UnregisterMemoryProfileImage (\r
+ IN LOADED_IMAGE_PRIVATE_DATA *DriverEntry\r
+ );\r
+\r
+/**\r
+ Update memory profile information.\r
+\r
+ @param CallerAddress Address of caller who call Allocate or Free.\r
+ @param Action This Allocate or Free action.\r
+ @param MemoryType Memory type.\r
+ EfiMaxMemoryType means the MemoryType is unknown.\r
+ @param Size Buffer size.\r
+ @param Buffer Buffer address.\r
+ @param ActionString String for memory profile action.\r
+ Only needed for user defined allocate action.\r
+\r
+ @return EFI_SUCCESS Memory profile is updated.\r
+ @return EFI_UNSUPPORTED Memory profile is unsupported,\r
+ or memory profile for the image is not required,\r
+ or memory profile for the memory type is not required.\r
+ @return EFI_ACCESS_DENIED It is during memory profile data getting.\r
+ @return EFI_ABORTED Memory profile recording is not enabled.\r
+ @return EFI_OUT_OF_RESOURCES No enough resource to update memory profile for allocate action.\r
+ @return EFI_NOT_FOUND No matched allocate info found for free action.\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+CoreUpdateProfile (\r
+ IN EFI_PHYSICAL_ADDRESS CallerAddress,\r
+ IN MEMORY_PROFILE_ACTION Action,\r
+ IN EFI_MEMORY_TYPE MemoryType,\r
+ IN UINTN Size, // Valid for AllocatePages/FreePages/AllocatePool\r
+ IN VOID *Buffer,\r
+ IN CHAR8 *ActionString OPTIONAL\r
+ );\r
+\r
+/**\r
+ Internal function. Converts a memory range to use new attributes.\r
+\r
+ @param Start The first address of the range Must be page\r
+ aligned\r
+ @param NumberOfPages The number of pages to convert\r
+ @param NewAttributes The new attributes value for the range.\r
+\r
+**/\r
+VOID\r
+CoreUpdateMemoryAttributes (\r
+ IN EFI_PHYSICAL_ADDRESS Start,\r
+ IN UINT64 NumberOfPages,\r
+ IN UINT64 NewAttributes\r
+ );\r
+\r
+/**\r
+ Initialize PropertiesTable support.\r
+**/\r
+VOID\r
+EFIAPI\r
+CoreInitializePropertiesTable (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Initialize MemoryAttrubutesTable support.\r
+**/\r
+VOID\r
+EFIAPI\r
+CoreInitializeMemoryAttributesTable (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Initialize Memory Protection support.\r
+**/\r
+VOID\r
+EFIAPI\r
+CoreInitializeMemoryProtection (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Install MemoryAttributesTable on memory allocation.\r
+\r
+ @param[in] MemoryType EFI memory type.\r
+**/\r
+VOID\r
+InstallMemoryAttributesTableOnMemoryAllocation (\r
+ IN EFI_MEMORY_TYPE MemoryType\r
+ );\r
+\r
+/**\r
+ Insert image record.\r
+\r
+ @param RuntimeImage Runtime image information\r
+**/\r
+VOID\r
+InsertImageRecord (\r
+ IN EFI_RUNTIME_IMAGE_ENTRY *RuntimeImage\r
+ );\r
+\r
+/**\r
+ Remove Image record.\r
+\r
+ @param RuntimeImage Runtime image information\r
+**/\r
+VOID\r
+RemoveImageRecord (\r
+ IN EFI_RUNTIME_IMAGE_ENTRY *RuntimeImage\r
+ );\r
+\r
+/**\r
+ Protect UEFI image.\r
+\r
+ @param[in] LoadedImage The loaded image protocol\r
+ @param[in] LoadedImageDevicePath The loaded image device path protocol\r
+**/\r
+VOID\r
+ProtectUefiImage (\r
+ IN EFI_LOADED_IMAGE_PROTOCOL *LoadedImage,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath\r
+ );\r
+\r
+/**\r
+ Unprotect UEFI image.\r
+\r
+ @param[in] LoadedImage The loaded image protocol\r
+ @param[in] LoadedImageDevicePath The loaded image device path protocol\r
+**/\r
+VOID\r
+UnprotectUefiImage (\r
+ IN EFI_LOADED_IMAGE_PROTOCOL *LoadedImage,\r
+ IN EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath\r
+ );\r
+\r
+/**\r
+ ExitBootServices Callback function for memory protection.\r
+**/\r
+VOID\r
+MemoryProtectionExitBootServicesCallback (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Manage memory permission attributes on a memory range, according to the\r
+ configured DXE memory protection policy.\r
+\r
+ @param OldType The old memory type of the range\r
+ @param NewType The new memory type of the range\r
+ @param Memory The base address of the range\r
+ @param Length The size of the range (in bytes)\r
+\r
+ @return EFI_SUCCESS If the the CPU arch protocol is not installed yet\r
+ @return EFI_SUCCESS If no DXE memory protection policy has been configured\r
+ @return EFI_SUCCESS If OldType and NewType use the same permission attributes\r
+ @return other Return value of gCpu->SetMemoryAttributes()\r
+\r
+**/\r
+EFI_STATUS\r
+EFIAPI\r
+ApplyMemoryProtectionPolicy (\r
+ IN EFI_MEMORY_TYPE OldType,\r
+ IN EFI_MEMORY_TYPE NewType,\r
+ IN EFI_PHYSICAL_ADDRESS Memory,\r
+ IN UINT64 Length\r
+ );\r
+\r
+/**\r
+ Merge continous memory map entries whose have same attributes.\r
+\r
+ @param MemoryMap A pointer to the buffer in which firmware places\r
+ the current memory map.\r
+ @param MemoryMapSize A pointer to the size, in bytes, of the\r
+ MemoryMap buffer. On input, this is the size of\r
+ the current memory map. On output,\r
+ it is the size of new memory map after merge.\r
+ @param DescriptorSize Size, in bytes, of an individual EFI_MEMORY_DESCRIPTOR.\r
+**/\r
+VOID\r
+MergeMemoryMap (\r
+ IN OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,\r
+ IN OUT UINTN *MemoryMapSize,\r
+ IN UINTN DescriptorSize\r
);\r
\r
#endif\r