]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Core/Dxe/DxeMain.h
Retiring the ANT/JAVA build and removing the older EDK II packages that required...
[mirror_edk2.git] / EdkModulePkg / Core / Dxe / DxeMain.h
diff --git a/EdkModulePkg/Core/Dxe/DxeMain.h b/EdkModulePkg/Core/Dxe/DxeMain.h
deleted file mode 100644 (file)
index b4cd76a..0000000
+++ /dev/null
@@ -1,2762 +0,0 @@
-/*++\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