+++ /dev/null
-/*++\r
-\r
-Copyright (c) 2006 - 2007, 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
-Module Name:\r
-\r
- DxeMain.h\r
-\r
-Abstract:\r
-\r
-Revision History\r
-\r
---*/\r
-\r
-#ifndef _DXE_MAIN_H_\r
-#define _DXE_MAIN_H_\r
-\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
-\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
-///\r
-#define EFI_DEP_REPLACE_TRUE 0xff\r
-\r
-///\r
-/// Define the initial size of the dependency expression evaluation stack\r
-///\r
-#define DEPEX_STACK_SIZE_INCREMENT 0x1000\r
-\r
-typedef struct {\r
- EFI_GUID *ProtocolGuid;\r
- VOID **Protocol;\r
- EFI_EVENT Event;\r
- VOID *Registration;\r
- BOOLEAN Present;\r
-} ARCHITECTURAL_PROTOCOL_ENTRY;\r
-\r
-\r
-//\r
-// DXE Dispatcher Data structures\r
-//\r
-\r
-#define KNOWN_HANDLE_SIGNATURE EFI_SIGNATURE_32('k','n','o','w')\r
-typedef struct {\r
- UINTN Signature;\r
- LIST_ENTRY Link; // mFvHandleList \r
- EFI_HANDLE Handle;\r
-} KNOWN_HANDLE;\r
-\r
-\r
-#define EFI_CORE_DRIVER_ENTRY_SIGNATURE EFI_SIGNATURE_32('d','r','v','r')\r
-typedef struct {\r
- UINTN Signature;\r
- LIST_ENTRY Link; // mDriverList\r
-\r
- LIST_ENTRY ScheduledLink; // mScheduledQueue\r
-\r
- EFI_HANDLE FvHandle;\r
- EFI_GUID FileName;\r
- EFI_DEVICE_PATH_PROTOCOL *FvFileDevicePath;\r
- EFI_FIRMWARE_VOLUME_PROTOCOL *Fv;\r
-\r
- VOID *Depex;\r
- UINTN DepexSize;\r
-\r
- BOOLEAN Before;\r
- BOOLEAN After;\r
- EFI_GUID BeforeAfterGuid;\r
-\r
- BOOLEAN Dependent;\r
- BOOLEAN Unrequested;\r
- BOOLEAN Scheduled;\r
- BOOLEAN Untrusted;\r
- BOOLEAN Initialized;\r
- BOOLEAN DepexProtocolError;\r
-\r
- EFI_HANDLE ImageHandle;\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
-typedef struct {\r
- UINTN Signature;\r
- LIST_ENTRY Link;\r
- EFI_PHYSICAL_ADDRESS BaseAddress;\r
- UINT64 EndAddress;\r
- UINT64 Capabilities;\r
- UINT64 Attributes;\r
- EFI_GCD_MEMORY_TYPE GcdMemoryType;\r
- EFI_GCD_IO_TYPE GcdIoType;\r
- EFI_HANDLE ImageHandle;\r
- EFI_HANDLE DeviceHandle;\r
-} EFI_GCD_MAP_ENTRY;\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 EFI_DECOMPRESS_PROTOCOL gEfiDecompress;\r
-extern EFI_PEI_PE_COFF_LOADER_PROTOCOL *gEfiPeiPeCoffLoader;\r
-\r
-extern EFI_RUNTIME_ARCH_PROTOCOL *gRuntime;\r
-extern EFI_CPU_ARCH_PROTOCOL *gCpu;\r
-extern EFI_WATCHDOG_TIMER_ARCH_PROTOCOL *gWatchdogTimer;\r
-extern EFI_METRONOME_ARCH_PROTOCOL *gMetronome;\r
-extern EFI_TIMER_ARCH_PROTOCOL *gTimer;\r
-extern EFI_SECURITY_ARCH_PROTOCOL *gSecurity;\r
-extern EFI_BDS_ARCH_PROTOCOL *gBds;\r
-extern EFI_STATUS_CODE_PROTOCOL *gStatusCode;\r
-\r
-extern EFI_TPL gEfiCurrentTpl;\r
-\r
-extern EFI_GUID *gDxeCoreFileName;\r
-extern EFI_LOADED_IMAGE_PROTOCOL *gDxeCoreLoadedImage;\r
-\r
-extern EFI_MEMORY_TYPE_INFORMATION gMemoryTypeInformation[EfiMaxMemoryType + 1];\r
-\r
-extern BOOLEAN gDispatcherRunning;\r
-extern EFI_RUNTIME_ARCH_PROTOCOL gRuntimeTemplate;\r
-\r
-//\r
-// Service Initialization Functions\r
-//\r
-\r
-\r
-VOID\r
-CoreInitializePool (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Called to initialize the pool.\r
-\r
-Arguments:\r
-\r
- None\r
-\r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-CoreAddMemoryDescriptor (\r
- IN EFI_MEMORY_TYPE Type,\r
- IN EFI_PHYSICAL_ADDRESS Start,\r
- IN UINT64 NumberOfPages,\r
- IN UINT64 Attribute\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Called to initialize the memory map and add descriptors to\r
- the current descriptor list.\r
-\r
- The first descriptor that is added must be general usable\r
- memory as the addition allocates heap.\r
-\r
-Arguments:\r
-\r
- Type - The type of memory to add\r
-\r
- Start - The starting address in the memory range\r
- Must be page aligned\r
-\r
- NumberOfPages - The number of pages in the range\r
-\r
- Attribute - Attributes of the memory to add\r
-\r
-Returns:\r
-\r
- None. The range is added to the memory map\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-CoreReleaseGcdMemoryLock (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
- Release memory lock on mGcdMemorySpaceLock\r
-\r
-Arguments:\r
- None\r
-\r
-Returns:\r
- None\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-CoreAcquireGcdMemoryLock (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
- Acquire memory lock on mGcdMemorySpaceLock\r
-\r
-Arguments:\r
- None\r
-\r
-Returns:\r
- None\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreInitializeMemoryServices (\r
- IN VOID **HobStart,\r
- IN EFI_PHYSICAL_ADDRESS *MemoryBaseAddress,\r
- IN UINT64 *MemoryLength\r
- )\r
-/*++\r
-\r
-Routine Description:\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
-\r
-Arguments:\r
-\r
- HobStart - The start address of the HOB.\r
- \r
- MemoryBaseAddress - Start address of memory region found to init DXE core.\r
- \r
- MemoryLength - Length of memory region found to init DXE core.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Memory services successfully initialized.\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-CoreInitializeGcdServices (\r
- IN VOID **HobStart,\r
- IN EFI_PHYSICAL_ADDRESS MemoryBaseAddress,\r
- IN UINT64 MemoryLength\r
- )\r
-/*++\r
-\r
-Routine Description:\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
-\r
-Arguments:\r
-\r
- HobStart - The start address of the HOB\r
- \r
- MemoryBaseAddress - Start address of memory region found to init DXE core.\r
- \r
- MemoryLength - Length of memory region found to init DXE core.\r
-\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - GCD services successfully initialized.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreInitializeEventServices (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Initializes "event" support and populates parts of the System and Runtime Table.\r
-\r
-Arguments:\r
-\r
- None\r
- \r
-Returns:\r
-\r
- EFI_SUCCESS - Always return success\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreInitializeImageServices (\r
- IN VOID *HobStart\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Add the Image Services to EFI Boot Services Table and install the protocol\r
- interfaces for this image.\r
-\r
-Arguments:\r
-\r
- HobStart - The HOB to initialize\r
-\r
-Returns:\r
-\r
- Status code.\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-CoreNotifyOnArchProtocolInstallation (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
- Creates an event that is fired everytime a Protocol of a specific type is installed\r
-\r
-Arguments:\r
- NONE\r
-\r
-Returns:\r
- NONE\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreAllEfiServicesAvailable (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
- Return TRUE if all AP services are availible.\r
-\r
-Arguments:\r
- NONE\r
-\r
-Returns:\r
- EFI_SUCCESS - All AP services are available\r
- EFI_NOT_FOUND - At least one AP service is not available \r
-\r
---*/\r
-;\r
-\r
-VOID\r
-CalculateEfiHdrCrc (\r
- IN OUT EFI_TABLE_HEADER *Hdr\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Calcualte the 32-bit CRC in a EFI table using the service provided by the\r
- gRuntime service.\r
-\r
-Arguments:\r
-\r
- Hdr - Pointer to an EFI standard header\r
-\r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-EFIAPI\r
-CoreTimerTick (\r
- IN UINT64 Duration\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Called by the platform code to process a tick.\r
-\r
-Arguments:\r
-\r
- Duration - The number of 100ns elasped since the last call to TimerTick\r
- \r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-CoreInitializeDispatcher (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Initialize the dispatcher. Initialize the notification function that runs when\r
- a FV protocol is added to the system.\r
-\r
-Arguments:\r
-\r
- NONE\r
-\r
-Returns:\r
-\r
- NONE \r
-\r
---*/\r
-;\r
-\r
-BOOLEAN\r
-CoreIsSchedulable (\r
- IN EFI_CORE_DRIVER_ENTRY *DriverEntry \r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- This is the POSTFIX version of the dependency evaluator. This code does \r
- not need to handle Before or After, as it is not valid to call this \r
- routine in this case. The SOR is just ignored and is a nop in the grammer.\r
-\r
- POSTFIX means all the math is done on top of the stack.\r
-\r
-Arguments:\r
-\r
- DriverEntry - DriverEntry element to update\r
- \r
-Returns:\r
-\r
- TRUE - If driver is ready to run.\r
-\r
- FALSE - If driver is not ready to run or some fatal error was found.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CorePreProcessDepex (\r
- IN EFI_CORE_DRIVER_ENTRY *DriverEntry \r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Preprocess dependency expression and update DriverEntry to reflect the\r
- state of Before, After, and SOR dependencies. If DriverEntry->Before\r
- or DriverEntry->After is set it will never be cleared. If SOR is set\r
- it will be cleared by CoreSchedule(), and then the driver can be \r
- dispatched.\r
-\r
-Arguments:\r
-\r
- DriverEntry - DriverEntry element to update\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - It always works.\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreExitBootServices (\r
- IN EFI_HANDLE ImageHandle,\r
- IN UINTN MapKey\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- EFI 1.0 API to terminate Boot Services\r
-\r
-Arguments:\r
-\r
- ImageHandle - Handle that represents the identity of the calling image\r
-\r
- MapKey -Key to the latest memory map.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Boot Services terminated\r
- EFI_INVALID_PARAMETER - MapKey is incorrect.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreTerminateMemoryMap (\r
- IN UINTN MapKey\r
- )\r
-/*++\r
-\r
-Routine Description:\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
-Arguments:\r
-\r
- MapKey - Memory map key\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Memory map not consistent with construction rules.\r
- \r
- EFI_SUCCESS - Valid memory map.\r
-\r
---*/\r
-;\r
-\r
-VOID\r
-CoreNotifySignalList (\r
- IN EFI_GUID *EventGroup\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Signals all events on the requested list\r
-\r
-Arguments:\r
-\r
- SignalType - The list to signal\r
- \r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreInstallConfigurationTable (\r
- IN EFI_GUID *Guid,\r
- IN VOID *Table\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Boot Service called to add, modify, or remove a system configuration table from \r
- the EFI System Table.\r
-\r
-Arguments:\r
-\r
- Guid: Pointer to the GUID for the entry to add, update, or remove\r
- Table: Pointer to the configuration table for the entry to add, update, or\r
- remove, may be NULL.\r
-\r
-Returns:\r
- \r
- EFI_SUCCESS Guid, Table pair added, updated, or removed.\r
- EFI_INVALID_PARAMETER Input GUID not valid.\r
- EFI_NOT_FOUND Attempted to delete non-existant entry\r
- EFI_OUT_OF_RESOURCES Not enough memory available\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_TPL\r
-EFIAPI\r
-CoreRaiseTpl (\r
- IN EFI_TPL NewTpl\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Raise the task priority level to the new level.\r
- High level is implemented by disabling processor interrupts.\r
-\r
-Arguments:\r
-\r
- NewTpl - New task priority level\r
- \r
-Returns:\r
-\r
- The previous task priority level\r
-\r
---*/\r
-;\r
-\r
-\r
-VOID\r
-EFIAPI\r
-CoreRestoreTpl (\r
- IN EFI_TPL NewTpl\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Lowers the task priority to the previous value. If the new \r
- priority unmasks events at a higher priority, they are dispatched.\r
-\r
-Arguments:\r
-\r
- NewTpl - New, lower, task priority\r
- \r
-Returns:\r
-\r
- None\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreStall (\r
- IN UINTN Microseconds\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Introduces a fine-grained stall.\r
-\r
-Arguments:\r
-\r
- Microseconds The number of microseconds to stall execution\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Execution was stalled for at least the requested amount\r
- of microseconds.\r
-\r
- EFI_NOT_AVAILABLE_YET - gMetronome is not available yet\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
-\r
-Routine Description:\r
-\r
- Sets the system's watchdog timer.\r
-\r
-Arguments:\r
-\r
- Timeout The number of seconds. Zero disables the timer.\r
-\r
- ///////following three parameters are left for platform specific using \r
- \r
- WatchdogCode The numberic code to log. 0x0 to 0xffff are firmware\r
- DataSize Size of the optional data\r
- WatchdogData Optional Null terminated unicode string followed by binary \r
- data.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS Timeout has been set\r
- EFI_NOT_AVAILABLE_YET WatchdogTimer is not available yet \r
- EFI_UNSUPPORTED System does not have a timer (currently not used)\r
- EFI_DEVICE_ERROR Could not complete due to hardware error\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreInstallProtocolInterface (\r
- IN OUT EFI_HANDLE *UserHandle,\r
- IN EFI_GUID *Protocol,\r
- IN EFI_INTERFACE_TYPE InterfaceType,\r
- IN VOID *Interface\r
- )\r
-/*++\r
-\r
-Routine Description:\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
-Arguments:\r
-\r
- UserHandle - The handle to install the protocol handler on,\r
- or NULL if a new handle is to be allocated\r
-\r
- Protocol - The protocol to add to the handle\r
-\r
- InterfaceType - Indicates whether Interface is supplied in native form.\r
-\r
- Interface - The interface for the protocol being added\r
-\r
-Returns:\r
-\r
- Status code \r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreInstallProtocolInterfaceNotify (\r
- IN OUT EFI_HANDLE *UserHandle,\r
- IN EFI_GUID *Protocol,\r
- IN EFI_INTERFACE_TYPE InterfaceType,\r
- IN VOID *Interface,\r
- IN BOOLEAN Notify\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Installs a protocol interface into the boot services environment.\r
-\r
-Arguments:\r
-\r
- UserHandle - The handle to install the protocol handler on,\r
- or NULL if a new handle is to be allocated\r
-\r
- Protocol - The protocol to add to the handle\r
-\r
- InterfaceType - Indicates whether Interface is supplied in native form.\r
-\r
- Interface - The interface for the protocol being added\r
- \r
- Notify - Whether to notify the notification list for this protocol \r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Invalid parameter\r
- \r
- EFI_OUT_OF_RESOURCES - No enough buffer to allocate\r
- \r
- EFI_SUCCESS - Protocol interface successfully installed\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreInstallMultipleProtocolInterfaces (\r
- IN OUT EFI_HANDLE *Handle,\r
- ...\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Installs a list of protocol interface into the boot services environment.\r
- This function calls InstallProtocolInterface() in a loop. If any error\r
- occures all the protocols added by this function are removed. This is \r
- basically a lib function to save space.\r
-\r
-Arguments:\r
-\r
- Handle - The handle to install the protocol handlers on,\r
- or NULL if a new handle is to be allocated\r
- ... - EFI_GUID followed by protocol instance. A NULL terminates the \r
- list. The pairs are the arguments to InstallProtocolInterface().\r
- All the protocols are added to Handle.\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Handle is NULL.\r
- \r
- EFI_SUCCESS - Protocol interfaces successfully installed.\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreUninstallMultipleProtocolInterfaces (\r
- IN EFI_HANDLE Handle,\r
- ...\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Uninstalls a list of protocol interface in the boot services environment. \r
- This function calls UnisatllProtocolInterface() in a loop. This is \r
- basically a lib function to save space.\r
-\r
-Arguments:\r
-\r
- Handle - The handle to uninstall the protocol\r
-\r
- ... - EFI_GUID followed by protocol instance. A NULL terminates the \r
- list. The pairs are the arguments to UninstallProtocolInterface().\r
- All the protocols are added to Handle.\r
-\r
-Returns:\r
-\r
- Status code \r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreReinstallProtocolInterface (\r
- IN EFI_HANDLE UserHandle,\r
- IN EFI_GUID *Protocol,\r
- IN VOID *OldInterface,\r
- IN VOID *NewInterface\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Reinstall a protocol interface on a device handle. The OldInterface for Protocol is replaced by the NewInterface.\r
-\r
-Arguments:\r
-\r
- UserHandle - Handle on which the interface is to be reinstalled\r
- Protocol - The numeric ID of the interface\r
- OldInterface - A pointer to the old interface\r
- NewInterface - A pointer to the new interface \r
-\r
-\r
-Returns:\r
-\r
- Status code.\r
-\r
- On EFI_SUCCESS The protocol interface was installed\r
- On EFI_NOT_FOUND The OldInterface on the handle was not found\r
- On EFI_INVALID_PARAMETER One of the parameters has an invalid value\r
- \r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreUninstallProtocolInterface (\r
- IN EFI_HANDLE UserHandle,\r
- IN EFI_GUID *Protocol,\r
- IN VOID *Interface\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Uninstalls all instances of a protocol:interfacer from a handle. \r
- If the last protocol interface is remove from the handle, the \r
- handle is freed.\r
-\r
-Arguments:\r
-\r
- UserHandle - The handle to remove the protocol handler from\r
-\r
- Protocol - The protocol, of protocol:interface, to remove\r
-\r
- Interface - The interface, of protocol:interface, to remove\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Protocol is NULL.\r
- \r
- EFI_SUCCESS - Protocol interface successfully uninstalled.\r
-\r
---*/\r
-;\r
-\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
-\r
-Routine Description:\r
-\r
- Queries a handle to determine if it supports a specified protocol.\r
-\r
-Arguments:\r
-\r
- UserHandle - The handle being queried.\r
-\r
- Protocol - The published unique identifier of the protocol.\r
-\r
- Interface - Supplies the address where a pointer to the corresponding Protocol\r
- Interface is returned.\r
-\r
-Returns:\r
-\r
- The requested protocol interface for the handle\r
- \r
---*/ \r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreOpenProtocol (\r
- IN EFI_HANDLE UserHandle,\r
- IN EFI_GUID *Protocol,\r
- OUT VOID **Interface OPTIONAL,\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_HANDLE ControllerHandle,\r
- IN UINT32 Attributes\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Locates the installed protocol handler for the handle, and\r
- invokes it to obtain the protocol interface. Usage information\r
- is registered in the protocol data base.\r
-\r
-Arguments:\r
-\r
- UserHandle - The handle to obtain the protocol interface on\r
-\r
- Protocol - The ID of the protocol \r
-\r
- Interface - The location to return the protocol interface\r
-\r
- ImageHandle - The handle of the Image that is opening the protocol interface\r
- specified by Protocol and Interface.\r
- \r
- ControllerHandle - The controller handle that is requiring this interface.\r
-\r
- Attributes - The open mode of the protocol interface specified by Handle\r
- and Protocol.\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Protocol is NULL.\r
- \r
- EFI_SUCCESS - Get the protocol interface.\r
- \r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreOpenProtocolInformation (\r
- IN EFI_HANDLE UserHandle,\r
- IN EFI_GUID *Protocol,\r
- OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY **EntryBuffer,\r
- OUT UINTN *EntryCount\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Return information about Opened protocols in the system\r
-\r
-Arguments:\r
-\r
- UserHandle - The handle to close the protocol interface on\r
-\r
- Protocol - The ID of the protocol \r
-\r
- EntryBuffer - A pointer to a buffer of open protocol information in the form of\r
- EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures.\r
-\r
- EntryCount - Number of EntryBuffer entries\r
-\r
-Returns:\r
-\r
- \r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreCloseProtocol (\r
- IN EFI_HANDLE UserHandle,\r
- IN EFI_GUID *Protocol,\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_HANDLE ControllerHandle\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Close Protocol\r
-\r
-Arguments:\r
-\r
- UserHandle - The handle to close the protocol interface on\r
-\r
- Protocol - The ID of the protocol \r
-\r
- ImageHandle - The user of the protocol to close\r
-\r
- ControllerHandle - The user of the protocol to close\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Protocol is NULL.\r
- \r
---*/\r
-;\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
-\r
-Routine Description:\r
-\r
- Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated\r
- from pool.\r
-\r
-Arguments:\r
-\r
- UserHandle - The handle from which to retrieve the list of protocol interface\r
- GUIDs.\r
-\r
- ProtocolBuffer - A pointer to the list of protocol interface GUID pointers that are\r
- installed on Handle.\r
-\r
- ProtocolBufferCount - A pointer to the number of GUID pointers present in\r
- ProtocolBuffer.\r
-\r
-Returns:\r
- EFI_SUCCESS - The list of protocol interface GUIDs installed on Handle was returned in\r
- ProtocolBuffer. The number of protocol interface GUIDs was\r
- returned in ProtocolBufferCount.\r
- EFI_INVALID_PARAMETER - Handle is NULL.\r
- EFI_INVALID_PARAMETER - Handle is not a valid EFI_HANDLE.\r
- EFI_INVALID_PARAMETER - ProtocolBuffer is NULL.\r
- EFI_INVALID_PARAMETER - ProtocolBufferCount is NULL.\r
- EFI_OUT_OF_RESOURCES - There is not enough pool memory to store the results.\r
- \r
---*/\r
-;\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
-Routine Description:\r
-\r
- Add a new protocol notification record for the request protocol.\r
-\r
-Arguments:\r
-\r
- Protocol - The requested protocol to add the notify registration\r
-\r
- Event - The event to signal \r
-\r
- Registration - Returns the registration record\r
-\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Invalid parameter\r
-\r
- EFI_SUCCESS - Successfully returned the registration record that has been added\r
- \r
---*/\r
-;\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
-Routine Description:\r
-\r
- Locates the requested handle(s) and returns them in Buffer.\r
-\r
-Arguments:\r
-\r
- SearchType - The type of search to perform to locate the handles\r
-\r
- Protocol - The protocol to search for\r
- \r
- SearchKey - Dependant on SearchType\r
-\r
- BufferSize - On input the size of Buffer. On output the \r
- size of data returned. \r
-\r
- Buffer - The buffer to return the results in\r
-\r
-\r
-Returns:\r
-\r
- EFI_BUFFER_TOO_SMALL - Buffer too small, required buffer size is returned in BufferSize.\r
-\r
- EFI_INVALID_PARAMETER - Invalid parameter\r
- \r
- EFI_SUCCESS - Successfully found the requested handle(s) and returns them in Buffer.\r
- \r
---*/\r
-;\r
- \r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreLocateDevicePath (\r
- IN EFI_GUID *Protocol,\r
- IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath,\r
- OUT EFI_HANDLE *Device\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Locates the handle to a device on the device path that supports the specified protocol.\r
-\r
-Arguments:\r
-\r
- Protocol - The protocol to search for.\r
- FilePath - On input, a pointer to a pointer to the device path. On output, the device\r
- path pointer is modified to point to the remaining part of the devicepath.\r
- Device - A pointer to the returned device handle. \r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - The resulting handle was returned.\r
- EFI_NOT_FOUND - No handles matched the search.\r
- EFI_INVALID_PARAMETER - One of the parameters has an invalid value.\r
-\r
---*/\r
-;\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
-\r
-Routine Description:\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
-Arguments:\r
-\r
- SearchType - Specifies which handle(s) are to be returned.\r
- Protocol - Provides the protocol to search by. \r
- This parameter is only valid for SearchType ByProtocol.\r
- SearchKey - Supplies the search key depending on the SearchType.\r
- NumberHandles - The number of handles returned in Buffer.\r
- Buffer - A pointer to the buffer to return the requested array of \r
- handles that support Protocol.\r
-\r
-Returns:\r
- \r
- EFI_SUCCESS - The result array of handles was returned.\r
- EFI_NOT_FOUND - No handles match the search. \r
- EFI_OUT_OF_RESOURCES - There is not enough pool memory to store the matching results.\r
- EFI_INVALID_PARAMETER - Invalid parameter\r
-\r
---*/\r
-;\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
-\r
-Routine Description:\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
- you find.\r
-\r
-Arguments:\r
-\r
- Protocol - The protocol to search for\r
- \r
- Registration - Optional Registration Key returned from RegisterProtocolNotify() \r
-\r
- Interface - Return the Protocol interface (instance).\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - If a valid Interface is returned\r
- \r
- EFI_INVALID_PARAMETER - Invalid parameter\r
- \r
- EFI_NOT_FOUND - Protocol interface not found\r
-\r
---*/\r
-;\r
-\r
-UINT64\r
-CoreGetHandleDatabaseKey (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- return handle database key.\r
-\r
-Arguments:\r
-\r
- None\r
- \r
-Returns:\r
- \r
- Handle database key.\r
- \r
---*/\r
-;\r
-\r
-VOID\r
-CoreConnectHandlesByKey (\r
- UINT64 Key\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Go connect any handles that were created or modified while a image executed.\r
-\r
-Arguments:\r
-\r
- Key - The Key to show that the handle has been created/modified\r
-\r
-Returns:\r
- \r
- None\r
---*/\r
-;\r
-\r
-\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
-Routine Description:\r
-\r
- Connects one or more drivers to a controller.\r
-\r
-Arguments:\r
-\r
- ControllerHandle - Handle of the controller to be connected.\r
-\r
- DriverImageHandle - DriverImageHandle A pointer to an ordered list of driver image handles.\r
-\r
- RemainingDevicePath - RemainingDevicePath A pointer to the device path that specifies a child of the\r
- controller specified by ControllerHandle.\r
- \r
- Recursive - - Whether the function would be called recursively or not.\r
-\r
-Returns:\r
-\r
- Status code.\r
-\r
---*/\r
-;\r
-\r
-\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
-\r
-Routine Description:\r
-\r
- Disonnects a controller from a driver\r
-\r
-Arguments:\r
-\r
- ControllerHandle - ControllerHandle The handle of the controller from which driver(s) \r
- are to be disconnected.\r
- DriverImageHandle - DriverImageHandle The driver to disconnect from ControllerHandle.\r
- ChildHandle - ChildHandle The handle of the child to destroy.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - One or more drivers were disconnected from the controller.\r
- EFI_SUCCESS - On entry, no drivers are managing ControllerHandle.\r
- EFI_SUCCESS - DriverImageHandle is not NULL, and on entry DriverImageHandle is not managing ControllerHandle.\r
- EFI_INVALID_PARAMETER - ControllerHandle is not a valid EFI_HANDLE.\r
- EFI_INVALID_PARAMETER - DriverImageHandle is not NULL, and it is not a valid EFI_HANDLE.\r
- EFI_INVALID_PARAMETER - ChildHandle is not NULL, and it is not a valid EFI_HANDLE.\r
- EFI_OUT_OF_RESOURCES - There are not enough resources available to disconnect any drivers from ControllerHandle.\r
- EFI_DEVICE_ERROR - The controller could not be disconnected because of a device error.\r
-\r
---*/\r
-;\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
-Routine Description:\r
-\r
- Allocates pages from the memory map.\r
-\r
-Arguments:\r
-\r
- Type - The type of allocation to perform\r
-\r
- MemoryType - The type of memory to turn the allocated pages into\r
-\r
- NumberOfPages - The number of pages to allocate\r
-\r
- Memory - A pointer to receive the base allocated memory address\r
-\r
-Returns:\r
-\r
- Status. On success, Memory is filled in with the base address allocated\r
- \r
- EFI_INVALID_PARAMETER - Parameters violate checking rules defined in spec.\r
- \r
- EFI_NOT_FOUND - Could not allocate pages match the requirement.\r
- \r
- EFI_OUT_OF_RESOURCES - No enough pages to allocate.\r
- \r
- EFI_SUCCESS - Pages successfully allocated.\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS \r
-EFIAPI\r
-CoreFreePages (\r
- IN EFI_PHYSICAL_ADDRESS Memory,\r
- IN UINTN NumberOfPages\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Frees previous allocated pages.\r
-\r
-Arguments:\r
-\r
- Memory - Base address of memory being freed\r
-\r
- NumberOfPages - The number of pages to free\r
-\r
-Returns:\r
-\r
- EFI_NOT_FOUND - Could not find the entry that covers the range\r
- \r
- EFI_INVALID_PARAMETER - Address not aligned\r
- \r
- EFI_SUCCESS -Pages successfully freed.\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreGetMemoryMap (\r
- IN OUT UINTN *MemoryMapSize,\r
- IN OUT EFI_MEMORY_DESCRIPTOR *Desc,\r
- OUT UINTN *MapKey,\r
- OUT UINTN *DescriptorSize,\r
- OUT UINT32 *DescriptorVersion\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Returns the current memory map.\r
-\r
-Arguments:\r
-\r
- MemoryMapSize - On input the buffer size of MemoryMap allocated by caller\r
- On output the required buffer size to contain the memory map \r
- \r
- Desc - The buffer to return the current memory map\r
-\r
- MapKey - The address to return the current map key\r
-\r
- DescriptorSize - The size in bytes for an individual EFI_MEMORY_DESCRIPTOR\r
-\r
- DescriptorVersion - The version number associated with the EFI_MEMORY_DESCRIPTOR\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS The current memory map was returned successfully\r
-\r
- EFI_BUFFER_TOO_SMALL The MemoryMap buffer was too small\r
-\r
- EFI_INVALID_PARAMETER One of the parameters has an invalid value\r
-\r
---*/\r
-;\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
-\r
-Routine Description:\r
-\r
- Allocate pool of a particular type.\r
-\r
-Arguments:\r
-\r
- PoolType - Type of pool to allocate\r
-\r
- Size - The amount of pool to allocate\r
-\r
- Buffer - The address to return a pointer to the allocated pool\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - PoolType not valid\r
- \r
- EFI_OUT_OF_RESOURCES - Size exceeds max pool size or allocation failed. \r
- \r
- EFI_SUCCESS - Pool successfully allocated.\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreFreePool (\r
- IN VOID *Buffer\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Frees pool.\r
-\r
-Arguments:\r
-\r
- Buffer - The allocated pool entry to free\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Buffer is not a valid value.\r
- \r
- EFI_SUCCESS - Pool successfully freed.\r
-\r
---*/\r
-;\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
-\r
-Routine Description:\r
-\r
- Loads an EFI image into memory and returns a handle to the image.\r
-\r
-Arguments:\r
-\r
- BootPolicy - If TRUE, indicates that the request originates from the boot manager,\r
- and that the boot manager is attempting to load FilePath as a boot selection.\r
- ParentImageHandle - The caller's image handle.\r
- FilePath - The specific file path from which the image is loaded.\r
- SourceBuffer - If not NULL, a pointer to the memory location containing a copy of \r
- the image to be loaded.\r
- SourceSize - The size in bytes of SourceBuffer.\r
- ImageHandle - Pointer to the returned image handle that is created when the image \r
- is successfully loaded.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - The image was loaded into memory.\r
- EFI_NOT_FOUND - The FilePath was not found.\r
- EFI_INVALID_PARAMETER - One of the parameters has an invalid value.\r
- EFI_UNSUPPORTED - The image type is not supported, or the device path cannot be \r
- parsed to locate the proper protocol for loading the file.\r
- EFI_OUT_OF_RESOURCES - Image was not loaded due to insufficient resources.\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreUnloadImage (\r
- IN EFI_HANDLE ImageHandle\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Unload the specified image.\r
-\r
-Arguments:\r
-\r
- ImageHandle - The specified image handle.\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Image handle is NULL.\r
- \r
- EFI_UNSUPPORTED - Attempt to unload an unsupported image.\r
- \r
- EFI_SUCCESS - Image successfully unloaded.\r
-\r
---*/\r
-;\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
-\r
-Routine Description:\r
-\r
- Transfer control to a loaded image's entry point.\r
-\r
-Arguments:\r
-\r
- ImageHandle - Handle of image to be started.\r
- \r
- ExitDataSize - Pointer of the size to ExitData\r
- \r
- ExitData - Pointer to a pointer to a data buffer that includes a Null-terminated\r
- Unicode string, optionally followed by additional binary data. The string\r
- is a description that the caller may use to further indicate the reason for\r
- the image's exit.\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Invalid parameter\r
- \r
- EFI_OUT_OF_RESOURCES - No enough buffer to allocate\r
- \r
- EFI_SUCCESS - Successfully transfer control to the image's entry point.\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreExit (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_STATUS Status,\r
- IN UINTN ExitDataSize,\r
- IN CHAR16 *ExitData OPTIONAL\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Terminates the currently loaded EFI image and returns control to boot services.\r
-\r
-Arguments:\r
-\r
- ImageHandle - Handle that identifies the image. This parameter is passed to the image \r
- on entry.\r
- Status - The image's exit code.\r
- ExitDataSize - The size, in bytes, of ExitData. Ignored if ExitStatus is\r
- EFI_SUCCESS.\r
- ExitData - Pointer to a data buffer that includes a Null-terminated Unicode string,\r
- optionally followed by additional binary data. The string is a \r
- description that the caller may use to further indicate the reason for\r
- the image's exit.\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Image handle is NULL or it is not current image.\r
- \r
- EFI_SUCCESS - Successfully terminates the currently loaded EFI image.\r
- \r
- EFI_ACCESS_DENIED - Should never reach there.\r
-\r
---*/\r
-;\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 *pEvent\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Creates a general-purpose event structure\r
-\r
-Arguments:\r
-\r
- Type - The type of event to create and its mode and attributes\r
- NotifyTpl - The task priority level of event notifications\r
- NotifyFunction - Pointer to the event's notification function\r
- NotifyContext - Pointer to the notification function's context; corresponds to\r
- parameter "Context" in the notification function\r
- pEvent - Pointer to the newly created event if the call succeeds; undefined otherwise\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - The event structure was created\r
- EFI_INVALID_PARAMETER - One of the parameters has an invalid value\r
- EFI_OUT_OF_RESOURCES - The event could not be allocated\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreCreateEventEx (\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
-Routine Description:\r
- Creates a general-purpose event structure\r
-\r
-Arguments:\r
- Type - The type of event to create and its mode and attributes\r
- NotifyTpl - The task priority level of event notifications\r
- NotifyFunction - Pointer to the events notification function\r
- NotifyContext - Pointer to the notification functions context; corresponds to\r
- parameter "Context" in the notification function\r
- EventGrout - GUID for EventGroup if NULL act the same as gBS->CreateEvent().\r
- Event - Pointer to the newly created event if the call succeeds; undefined otherwise\r
-\r
-Returns:\r
- EFI_SUCCESS - The event structure was created\r
- EFI_INVALID_PARAMETER - One of the parameters has an invalid value\r
- EFI_OUT_OF_RESOURCES - The event could not be allocated\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreSetTimer (\r
- IN EFI_EVENT Event,\r
- IN EFI_TIMER_DELAY Type,\r
- IN UINT64 TriggerTime\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Sets the type of timer and the trigger time for a timer event.\r
-\r
-Arguments:\r
-\r
- UserEvent - The timer event that is to be signaled at the specified time\r
- Type - The type of time that is specified in TriggerTime\r
- TriggerTime - The number of 100ns units until the timer expires\r
- \r
-Returns:\r
-\r
- EFI_SUCCESS - The event has been set to be signaled at the requested time\r
- EFI_INVALID_PARAMETER - Event or Type is not valid\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreSignalEvent (\r
- IN EFI_EVENT Event\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Signals the event. Queues the event to be notified if needed\r
- \r
-Arguments:\r
-\r
- Event - The event to signal\r
- \r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Parameters are not valid.\r
- \r
- EFI_SUCCESS - The event was signaled.\r
-\r
---*/\r
-;\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
-\r
-Routine Description:\r
-\r
- Stops execution until an event is signaled.\r
- \r
-Arguments:\r
-\r
- NumberOfEvents - The number of events in the UserEvents array\r
- UserEvents - An array of EFI_EVENT\r
- UserIndex - Pointer to the index of the event which satisfied the wait condition\r
- \r
-Returns:\r
-\r
- EFI_SUCCESS - The event indicated by Index was signaled.\r
- EFI_INVALID_PARAMETER - The event indicated by Index has a notification function or \r
- Event was not a valid type\r
- EFI_UNSUPPORTED - The current TPL is not TPL_APPLICATION\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreCloseEvent (\r
- IN EFI_EVENT Event\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Closes an event and frees the event structure.\r
- \r
-Arguments:\r
-\r
- UserEvent - Event to close\r
- \r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Parameters are not valid.\r
- \r
- EFI_SUCCESS - The event has been closed\r
-\r
---*/\r
-;\r
-\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreCheckEvent (\r
- IN EFI_EVENT Event\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Check the status of an event\r
- \r
-Arguments:\r
-\r
- UserEvent - The event to check\r
- \r
-Returns:\r
-\r
- EFI_SUCCESS - The event is in the signaled state\r
- EFI_NOT_READY - The event is not in the signaled state\r
- EFI_INVALID_PARAMETER - Event is of type EVT_NOTIFY_SIGNAL\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\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
-Routine Description:\r
-\r
- Add a segment of memory space to GCD map and add all available pages in this segment \r
- as memory descriptors.\r
-\r
-Arguments:\r
- \r
- GcdMemoryType - Memory type of the segment.\r
- \r
- BaseAddress - Base address of the segment.\r
- \r
- Length - Length of the segment.\r
- \r
- Capabilities - alterable attributes of the segment.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Merged this segment into GCD map.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreAllocateMemorySpace (\r
- IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,\r
- IN EFI_GCD_MEMORY_TYPE GcdMemoryType,\r
- IN UINTN Alignment,\r
- IN UINT64 Length,\r
- IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_HANDLE DeviceHandle OPTIONAL\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Allocate memory space on GCD map.\r
-\r
-Arguments:\r
- \r
- GcdAllocateType - The type of allocate operation\r
- \r
- GcdMemoryType - The desired memory type\r
- \r
- Alignment - Align with 2^Alignment\r
- \r
- Length - Length to allocate\r
- \r
- BaseAddress - Base address to allocate\r
- \r
- ImageHandle - The image handle consume the allocated space.\r
- \r
- DeviceHandle - The device handle consume the allocated space.\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Invalid parameter.\r
- \r
- EFI_NOT_FOUND - No descriptor contains the desired space.\r
- \r
- EFI_SUCCESS - Memory space successfully allocated.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreFreeMemorySpace (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-/*++\r
-\r
-Routine Description:Routine Description:\r
-\r
- Free a segment of memory space in GCD map.\r
-\r
-Arguments:\r
- \r
- BaseAddress - Base address of the segment.\r
- \r
- Length - Length of the segment.\r
- \r
-Returns:\r
-\r
- EFI_SUCCESS - Space successfully freed.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreRemoveMemorySpace (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-/*++\r
-\r
-Routine Description:Routine Description:\r
-\r
- Remove a segment of memory space in GCD map.\r
-\r
-Arguments:\r
- \r
- BaseAddress - Base address of the segment.\r
- \r
- Length - Length of the segment.\r
- \r
-Returns:\r
-\r
- EFI_SUCCESS - Successfully a segment of memory space.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreGetMemorySpaceDescriptor (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Search all entries in GCD map which contains specified segment and build it to a descriptor.\r
-\r
-Arguments:\r
-\r
- BaseAddress - Specified start address\r
- \r
- Descriptor - Specified length\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Invalid parameter\r
- \r
- EFI_SUCCESS - Successfully get memory space descriptor.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreSetMemorySpaceAttributes (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length,\r
- IN UINT64 Attributes\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Set memory space with specified attributes.\r
-\r
-Arguments:\r
-\r
- BaseAddress - Specified start address\r
- \r
- Length - Specified length\r
- \r
- Attributes - Specified attributes\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Successfully set attribute of a segment of memory space.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreGetMemorySpaceMap (\r
- OUT UINTN *NumberOfDescriptors,\r
- OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Transer all entries of GCD memory map into memory descriptors and pass to caller.\r
-\r
-Arguments:\r
-\r
- NumberOfDescriptors - Number of descriptors.\r
- \r
- MemorySpaceMap - Descriptor array\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Invalid parameter\r
- \r
- EFI_OUT_OF_RESOURCES - No enough buffer to allocate\r
- \r
- EFI_SUCCESS - Successfully get memory space map.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreAddIoSpace (\r
- IN EFI_GCD_IO_TYPE GcdIoType,\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Add a segment of IO space to GCD map.\r
-\r
-Arguments:\r
- \r
- GcdIoType - IO type of the segment.\r
- \r
- BaseAddress - Base address of the segment.\r
- \r
- Length - Length of the segment.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - Merged this segment into GCD map.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreAllocateIoSpace (\r
- IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType,\r
- IN EFI_GCD_IO_TYPE GcdIoType,\r
- IN UINTN Alignment,\r
- IN UINT64 Length,\r
- IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress,\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_HANDLE DeviceHandle OPTIONAL\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Allocate IO space on GCD map.\r
-\r
-Arguments:\r
- \r
- GcdAllocateType - The type of allocate operation\r
- \r
- GcdIoType - The desired IO type\r
- \r
- Alignment - Align with 2^Alignment\r
- \r
- Length - Length to allocate\r
- \r
- BaseAddress - Base address to allocate\r
- \r
- ImageHandle - The image handle consume the allocated space.\r
- \r
- DeviceHandle - The device handle consume the allocated space.\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Invalid parameter.\r
- \r
- EFI_NOT_FOUND - No descriptor contains the desired space.\r
- \r
- EFI_SUCCESS - IO space successfully allocated.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreFreeIoSpace (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-/*++\r
-\r
-Routine Description:Routine Description:\r
-\r
- Free a segment of IO space in GCD map.\r
-\r
-Arguments:\r
- \r
- BaseAddress - Base address of the segment.\r
- \r
- Length - Length of the segment.\r
- \r
-Returns:\r
-\r
- EFI_SUCCESS - Space successfully freed.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreRemoveIoSpace (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- IN UINT64 Length\r
- )\r
-/*++\r
-\r
-Routine Description:Routine Description:\r
-\r
- Remove a segment of IO space in GCD map.\r
-\r
-Arguments:\r
- \r
- BaseAddress - Base address of the segment.\r
- \r
- Length - Length of the segment.\r
- \r
-Returns:\r
-\r
- EFI_SUCCESS - Successfully removed a segment of IO space.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreGetIoSpaceDescriptor (\r
- IN EFI_PHYSICAL_ADDRESS BaseAddress,\r
- OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Search all entries in GCD map which contains specified segment and build it to a descriptor.\r
-\r
-Arguments:\r
-\r
- BaseAddress - Specified start address\r
- \r
- Descriptor - Specified length\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Descriptor is NULL.\r
- \r
- EFI_SUCCESS - Successfully get the IO space descriptor.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreGetIoSpaceMap (\r
- OUT UINTN *NumberOfDescriptors,\r
- OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Transer all entries of GCD IO map into IO descriptors and pass to caller.\r
-\r
-Arguments:\r
-\r
- NumberOfDescriptors - Number of descriptors.\r
- \r
- IoSpaceMap - Descriptor array\r
-\r
-Returns:\r
-\r
- EFI_INVALID_PARAMETER - Invalid parameter\r
- \r
- EFI_OUT_OF_RESOURCES - No enough buffer to allocate\r
- \r
- EFI_SUCCESS - Successfully get IO space map.\r
-\r
---*/\r
-;\r
-\r
-EFI_DXESERVICE\r
-EFI_STATUS\r
-EFIAPI\r
-CoreDispatcher (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- This is the main Dispatcher for DXE and it exits when there are no more \r
- drivers to run. Drain the mScheduledQueue and load and start a PE\r
- image for each driver. Search the mDiscoveredList to see if any driver can \r
- be placed on the mScheduledQueue. If no drivers are placed on the\r
- mScheduledQueue exit the function. On exit it is assumed the Bds()\r
- will be called, and when the Bds() exits the Dispatcher will be called \r
- again.\r
-\r
-Arguments:\r
-\r
- NONE\r
-\r
-Returns:\r
-\r
- EFI_ALREADY_STARTED - The DXE Dispatcher is already running\r
-\r
- EFI_NOT_FOUND - No DXE Drivers were dispatched\r
-\r
- EFI_SUCCESS - One or more DXE Drivers were dispatched\r
-\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
-Routine Description:\r
-\r
- Check every driver and locate a matching one. If the driver is found, the Unrequested\r
- state flag is cleared.\r
-\r
-Arguments:\r
-\r
- FirmwareVolumeHandle - The handle of the Firmware Volume that contains the firmware \r
- file specified by DriverName.\r
-\r
- DriverName - The Driver name to put in the Dependent state.\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - The DriverName was found and it's SOR bit was cleared\r
-\r
- EFI_NOT_FOUND - The DriverName does not exist or it's SOR bit was not set.\r
-\r
---*/\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
-Routine Description:\r
-\r
- Convert a driver from the Untrused back to the Scheduled state\r
-\r
-Arguments:\r
-\r
- FirmwareVolumeHandle - The handle of the Firmware Volume that contains the firmware \r
- file specified by DriverName.\r
-\r
- DriverName - The Driver name to put in the Scheduled state\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - The file was found in the untrusted state, and it was promoted \r
- to the trusted state.\r
-\r
- EFI_NOT_FOUND - The file was not found in the untrusted state.\r
-\r
---*/\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
-Routine Description:\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
-Arguments:\r
-\r
- Status - Current status\r
-\r
- Buffer - Current allocated buffer, or NULL\r
-\r
- BufferSize - Current buffer size needed\r
- \r
-Returns:\r
- \r
- TRUE - if the buffer was reallocated and the caller \r
- should try the API again.\r
-\r
- FALSE - buffer could not be allocated and the caller\r
- should not try the API again.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-FwVolDriverInit (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-/*++\r
-\r
-Routine Description:\r
- This routine is the driver initialization entry point. It initializes the\r
- libraries, and registers two notification functions. These notification\r
- functions are responsible for building the FV stack dynamically.\r
- \r
-Arguments:\r
- ImageHandle - The image handle.\r
- SystemTable - The system table.\r
- \r
-Returns:\r
- EFI_SUCCESS - Function successfully returned.\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-InitializeSectionExtraction (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
- )\r
-/*++\r
-\r
-Routine Description: \r
- Entry point of the section extraction code. Initializes an instance of the \r
- section extraction interface and installs it on a new handle.\r
-\r
-Arguments: \r
- ImageHandle EFI_HANDLE: A handle for the image that is initializing this driver\r
- SystemTable EFI_SYSTEM_TABLE: A pointer to the EFI system table \r
-\r
-Returns: \r
- EFI_SUCCESS: Driver initialized successfully\r
- EFI_OUT_OF_RESOURCES: Could not allocate needed resources\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreProcessFirmwareVolume (\r
- IN VOID *FvHeader,\r
- IN UINTN Size, \r
- OUT EFI_HANDLE *FVProtocolHandle\r
- )\r
-/*++\r
-\r
-Routine Description:\r
- This DXE service routine is used to process a firmware volume. In\r
- particular, it can be called by BDS to process a single firmware\r
- volume found in a capsule. \r
-\r
-Arguments:\r
- FvHeader - pointer to a firmware volume header\r
- Size - the size of the buffer pointed to by FvHeader\r
- FVProtocolHandle - the handle on which a firmware volume protocol\r
- was produced for the firmware volume passed in.\r
-\r
-Returns:\r
- EFI_OUT_OF_RESOURCES - if an FVB could not be produced due to lack of \r
- system resources\r
- EFI_VOLUME_CORRUPTED - if the volume was corrupted\r
- EFI_SUCCESS - a firmware volume protocol was produced for the\r
- firmware volume\r
-\r
---*/\r
-;\r
-\r
-//\r
-//Functions used during debug buils\r
-//\r
-VOID\r
-CoreDisplayMissingArchProtocols (\r
- VOID\r
- )\r
-/*++\r
-\r
- Routine Description:\r
- Displays Architectural protocols that were not loaded and are required for DXE core to function\r
- Only used in Debug Builds\r
-\r
- Arguments:\r
- NONE\r
-\r
- Returns:\r
- NONE\r
-\r
---*/;\r
- \r
-VOID\r
-CoreDisplayDiscoveredNotDispatched (\r
- VOID\r
- )\r
-/*++\r
-\r
- Routine Description:\r
-\r
- Traverse the discovered list for any drivers that were discovered but not loaded \r
- because the dependency experessions evaluated to false\r
-\r
- Arguments:\r
-\r
- NONE\r
-\r
- Returns:\r
-\r
- NONE \r
-\r
---*/;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreEfiNotAvailableYetArg0 (\r
- VOID\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Place holder function until all the Boot Services and Runtime Services are available\r
-\r
-Arguments:\r
-\r
- None\r
-\r
-Returns:\r
-\r
- EFI_NOT_AVAILABLE_YET\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreEfiNotAvailableYetArg1 (\r
- UINTN Arg1\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Place holder function until all the Boot Services and Runtime Services are available\r
-\r
-Arguments:\r
-\r
- Arg1 - Undefined\r
-\r
-Returns:\r
-\r
- EFI_NOT_AVAILABLE_YET\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreEfiNotAvailableYetArg2 (\r
- UINTN Arg1,\r
- UINTN Arg2\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Place holder function until all the Boot Services and Runtime Services are available\r
-\r
-Arguments:\r
-\r
- Arg1 - Undefined\r
- \r
- Arg2 - Undefined\r
-\r
-Returns:\r
-\r
- EFI_NOT_AVAILABLE_YET\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreEfiNotAvailableYetArg3 (\r
- UINTN Arg1,\r
- UINTN Arg2,\r
- UINTN Arg3\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Place holder function until all the Boot Services and Runtime Services are available\r
-\r
-Arguments:\r
-\r
- Arg1 - Undefined\r
- \r
- Arg2 - Undefined\r
- \r
- Arg3 - Undefined\r
-\r
-Returns:\r
-\r
- EFI_NOT_AVAILABLE_YET\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreEfiNotAvailableYetArg4 (\r
- UINTN Arg1,\r
- UINTN Arg2,\r
- UINTN Arg3,\r
- UINTN Arg4\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Place holder function until all the Boot Services and Runtime Services are available\r
-\r
-Arguments:\r
-\r
- Arg1 - Undefined\r
- \r
- Arg2 - Undefined\r
- \r
- Arg3 - Undefined\r
- \r
- Arg4 - Undefined\r
-\r
-Returns:\r
-\r
- EFI_NOT_AVAILABLE_YET\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-CoreEfiNotAvailableYetArg5 (\r
- UINTN Arg1,\r
- UINTN Arg2,\r
- UINTN Arg3,\r
- UINTN Arg4,\r
- UINTN Arg5\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Place holder function until all the Boot Services and Runtime Services are available\r
-\r
-Arguments:\r
-\r
- Arg1 - Undefined\r
- \r
- Arg2 - Undefined\r
- \r
- Arg3 - Undefined\r
- \r
- Arg4 - Undefined\r
- \r
- Arg5 - Undefined\r
-\r
-Returns:\r
-\r
- EFI_NOT_AVAILABLE_YET\r
-\r
---*/\r
-;\r
-\r
-EFI_STATUS\r
-CoreGetPeiProtocol (\r
- IN EFI_GUID *ProtocolGuid,\r
- IN VOID **Interface\r
- )\r
-/*++\r
-\r
-Routine Description:\r
-\r
- Searches for a Protocol Interface passed from PEI through a HOB\r
-\r
-Arguments:\r
-\r
- ProtocolGuid - The Protocol GUID to search for in the HOB List\r
-\r
- Interface - A pointer to the interface for the Protocol GUID\r
-\r
-Returns:\r
-\r
- EFI_SUCCESS - The Protocol GUID was found and its interface is returned in Interface\r
-\r
- EFI_NOT_FOUND - The Protocol GUID was not found in the HOB List\r
-\r
---*/\r
-;\r
- \r
-EFI_STATUS\r
-DxeMainUefiDecompressGetInfo (\r
- IN EFI_DECOMPRESS_PROTOCOL *This,\r
- IN VOID *Source,\r
- IN UINT32 SourceSize,\r
- OUT UINT32 *DestinationSize,\r
- OUT UINT32 *ScratchSize\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxeMainUefiDecompress (\r
- IN EFI_DECOMPRESS_PROTOCOL *This,\r
- IN VOID *Source,\r
- IN UINT32 SourceSize,\r
- IN OUT VOID *Destination,\r
- IN UINT32 DestinationSize,\r
- IN OUT VOID *Scratch,\r
- IN UINT32 ScratchSize\r
- );\r
-\r
-EFI_STATUS\r
-DxeMainTianoDecompressGetInfo (\r
- IN EFI_TIANO_DECOMPRESS_PROTOCOL *This,\r
- IN VOID *Source,\r
- IN UINT32 SourceSize,\r
- OUT UINT32 *DestinationSize,\r
- OUT UINT32 *ScratchSize\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxeMainTianoDecompress (\r
- IN EFI_TIANO_DECOMPRESS_PROTOCOL *This,\r
- IN VOID *Source,\r
- IN UINT32 SourceSize,\r
- IN OUT VOID *Destination,\r
- IN UINT32 DestinationSize,\r
- IN OUT VOID *Scratch,\r
- IN UINT32 ScratchSize\r
- );\r
-\r
-EFI_STATUS\r
-DxeMainCustomDecompressGetInfo (\r
- IN EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL *This,\r
- IN VOID *Source,\r
- IN UINT32 SourceSize,\r
- OUT UINT32 *DestinationSize,\r
- OUT UINT32 *ScratchSize\r
- );\r
-\r
-EFI_STATUS\r
-EFIAPI\r
-DxeMainCustomDecompress (\r
- IN EFI_CUSTOMIZED_DECOMPRESS_PROTOCOL *This,\r
- IN VOID *Source,\r
- IN UINT32 SourceSize,\r
- IN OUT VOID *Destination,\r
- IN UINT32 DestinationSize,\r
- IN OUT VOID *Scratch,\r
- IN UINT32 ScratchSize\r
- );\r
-\r
-#endif\r