| /** @file |
| Include file matches things in PI. |
| |
| Copyright (c) 2006 - 2008, Intel Corporation |
| All rights reserved. This program and the accompanying materials |
| are licensed and made available under the terms and conditions of the BSD License |
| which accompanies this distribution. The full text of the license may be found at |
| http://opensource.org/licenses/bsd-license.php |
| |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. |
| |
| @par Revision Reference: |
| PI Version 1.0 |
| |
| **/ |
| |
| #ifndef __PI_DXECIS_H__ |
| #define __PI_DXECIS_H__ |
| |
| #include <gpxe/efi/Pi/PiMultiPhase.h> |
| |
| /// |
| /// Global Coherencey Domain types - Memory type |
| /// |
| typedef enum { |
| EfiGcdMemoryTypeNonExistent, |
| EfiGcdMemoryTypeReserved, |
| EfiGcdMemoryTypeSystemMemory, |
| EfiGcdMemoryTypeMemoryMappedIo, |
| EfiGcdMemoryTypeMaximum |
| } EFI_GCD_MEMORY_TYPE; |
| |
| /// |
| /// Global Coherencey Domain types - IO type |
| /// |
| typedef enum { |
| EfiGcdIoTypeNonExistent, |
| EfiGcdIoTypeReserved, |
| EfiGcdIoTypeIo, |
| EfiGcdIoTypeMaximum |
| } EFI_GCD_IO_TYPE; |
| |
| /// |
| /// The type of allocation to perform. |
| /// |
| typedef enum { |
| EfiGcdAllocateAnySearchBottomUp, |
| EfiGcdAllocateMaxAddressSearchBottomUp, |
| EfiGcdAllocateAddress, |
| EfiGcdAllocateAnySearchTopDown, |
| EfiGcdAllocateMaxAddressSearchTopDown, |
| EfiGcdMaxAllocateType |
| } EFI_GCD_ALLOCATE_TYPE; |
| |
| /// |
| /// EFI_GCD_MEMORY_SPACE_DESCRIPTOR |
| /// |
| typedef struct { |
| /// |
| /// The physical address of the first byte in the memory region. Type |
| /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function |
| /// description in the UEFI 2.0 specification |
| /// |
| EFI_PHYSICAL_ADDRESS BaseAddress; |
| |
| /// |
| /// The number of bytes in the memory region. |
| /// |
| UINT64 Length; |
| |
| /// |
| /// The bit mask of attributes that the memory region is capable of supporting. The bit |
| /// mask of available attributes is defined in the GetMemoryMap() function description |
| /// in the UEFI 2.0 specification. |
| /// |
| UINT64 Capabilities; |
| /// |
| /// The bit mask of attributes that the memory region is currently using. The bit mask of |
| /// available attributes is defined in GetMemoryMap(). |
| /// |
| UINT64 Attributes; |
| /// |
| /// Type of the memory region. Type EFI_GCD_MEMORY_TYPE is defined in the |
| /// AddMemorySpace() function description |
| /// |
| EFI_GCD_MEMORY_TYPE GcdMemoryType; |
| |
| /// |
| /// The image handle of the agent that allocated the memory resource described by |
| /// PhysicalStart and NumberOfBytes. If this field is NULL, then the memory |
| /// resource is not currently allocated. Type EFI_HANDLE is defined in |
| /// InstallProtocolInterface() in the UEFI 2.0 specification. |
| /// |
| EFI_HANDLE ImageHandle; |
| |
| /// |
| /// The device handle for which the memory resource has been allocated. If |
| /// ImageHandle is NULL, then the memory resource is not currently allocated. If this |
| /// field is NULL, then the memory resource is not associated with a device that is |
| /// described by a device handle. Type EFI_HANDLE is defined in |
| /// InstallProtocolInterface() in the UEFI 2.0 specification. |
| /// |
| EFI_HANDLE DeviceHandle; |
| } EFI_GCD_MEMORY_SPACE_DESCRIPTOR; |
| |
| /// |
| /// EFI_GCD_IO_SPACE_DESCRIPTOR |
| /// |
| typedef struct { |
| /// |
| /// Physical address of the first byte in the I/O region. Type |
| /// EFI_PHYSICAL_ADDRESS is defined in the AllocatePages() function |
| /// description in the UEFI 2.0 specification. |
| /// |
| EFI_PHYSICAL_ADDRESS BaseAddress; |
| |
| /// |
| /// Number of bytes in the I/O region. |
| /// |
| UINT64 Length; |
| |
| /// |
| /// Type of the I/O region. Type EFI_GCD_IO_TYPE is defined in the |
| /// AddIoSpace() function description. |
| /// |
| EFI_GCD_IO_TYPE GcdIoType; |
| |
| /// |
| /// The image handle of the agent that allocated the I/O resource described by |
| /// PhysicalStart and NumberOfBytes. If this field is NULL, then the I/O |
| /// resource is not currently allocated. Type EFI_HANDLE is defined in |
| /// InstallProtocolInterface() in the UEFI 2.0 specification. |
| /// |
| EFI_HANDLE ImageHandle; |
| |
| /// |
| /// The device handle for which the I/O resource has been allocated. If ImageHandle |
| /// is NULL, then the I/O resource is not currently allocated. If this field is NULL, then |
| /// the I/O resource is not associated with a device that is described by a device handle. |
| /// Type EFI_HANDLE is defined in InstallProtocolInterface() in the UEFI |
| /// 2.0 specification. |
| /// |
| EFI_HANDLE DeviceHandle; |
| } EFI_GCD_IO_SPACE_DESCRIPTOR; |
| |
| |
| /** |
| Adds reserved memory, system memory, or memory-mapped I/O resources to the |
| global coherency domain of the processor. |
| |
| @param GcdMemoryType The type of memory resource being added. |
| @param BaseAddress The physical address that is the start address |
| of the memory resource being added. |
| @param Length The size, in bytes, of the memory resource that |
| is being added. |
| @param Capabilities The bit mask of attributes that the memory |
| resource region supports. |
| |
| @retval EFI_SUCCESS The memory resource was added to the global |
| coherency domain of the processor. |
| @retval EFI_INVALID_PARAMETER GcdMemoryType is invalid. |
| @retval EFI_INVALID_PARAMETER Length is zero. |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources to add |
| the memory resource to the global coherency |
| domain of the processor. |
| @retval EFI_UNSUPPORTED The processor does not support one or more bytes |
| of the memory resource range specified by |
| BaseAddress and Length. |
| @retval EFI_ACCESS_DENIED One or more bytes of the memory resource range |
| specified by BaseAddress and Length conflicts |
| with a memory resource range that was previously |
| added to the global coherency domain of the processor. |
| @retval EFI_ACCESS_DENIED One or more bytes of the memory resource range |
| specified by BaseAddress and Length was allocated |
| in a prior call to AllocateMemorySpace().. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_ADD_MEMORY_SPACE)( |
| IN EFI_GCD_MEMORY_TYPE GcdMemoryType, |
| IN EFI_PHYSICAL_ADDRESS BaseAddress, |
| IN UINT64 Length, |
| IN UINT64 Capabilities |
| ); |
| |
| /** |
| Allocates nonexistent memory, reserved memory, system memory, or memorymapped |
| I/O resources from the global coherency domain of the processor. |
| |
| @param GcdAllocateType The type of allocation to perform. |
| @param GcdMemoryType The type of memory resource being allocated. |
| @param Alignment The log base 2 of the boundary that BaseAddress must |
| be aligned on output. Align with 2^Alignment. |
| @param Length The size in bytes of the memory resource range that |
| is being allocated. |
| @param BaseAddress A pointer to a physical address to allocate. |
| @param Imagehandle The image handle of the agent that is allocating |
| the memory resource. |
| @param DeviceHandle The device handle for which the memory resource |
| is being allocated. |
| |
| @retval EFI_INVALID_PARAMETER GcdAllocateType is invalid. |
| @retval EFI_INVALID_PARAMETER GcdMemoryType is invalid. |
| @retval EFI_INVALID_PARAMETER Length is zero. |
| @retval EFI_INVALID_PARAMETER BaseAddress is NULL. |
| @retval EFI_INVALID_PARAMETER ImageHandle is NULL. |
| @retval EFI_NOT_FOUND The memory resource request could not be satisfied. |
| No descriptor contains the desired space. |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources to allocate the memory |
| resource from the global coherency domain of the processor. |
| @retval EFI_SUCCESS The memory resource was allocated from the global coherency |
| domain of the processor. |
| |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_ALLOCATE_MEMORY_SPACE)( |
| IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, |
| IN EFI_GCD_MEMORY_TYPE GcdMemoryType, |
| IN UINTN Alignment, |
| IN UINT64 Length, |
| IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, |
| IN EFI_HANDLE ImageHandle, |
| IN EFI_HANDLE DeviceHandle OPTIONAL |
| ); |
| |
| /** |
| Frees nonexistent memory, reserved memory, system memory, or memory-mapped |
| I/O resources from the global coherency domain of the processor. |
| |
| @param BaseAddress The physical address that is the start address of the memory resource being freed. |
| @param Length The size in bytes of the memory resource range that is being freed. |
| |
| @retval EFI_SUCCESS The memory resource was freed from the global coherency domain of |
| the processor. |
| @retval EFI_INVALID_PARAMETER Length is zero. |
| @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory |
| resource range specified by BaseAddress and Length. |
| @retval EFI_NOT_FOUND The memory resource range specified by BaseAddress and |
| Length was not allocated with previous calls to AllocateMemorySpace(). |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources to free the memory resource |
| from the global coherency domain of the processor. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FREE_MEMORY_SPACE)( |
| IN EFI_PHYSICAL_ADDRESS BaseAddress, |
| IN UINT64 Length |
| ); |
| |
| /** |
| Removes reserved memory, system memory, or memory-mapped I/O resources from |
| the global coherency domain of the processor. |
| |
| @param BaseAddress The physical address that is the start address of the memory resource being removed. |
| @param Length The size in bytes of the memory resource that is being removed. |
| |
| @retval EFI_SUCCESS The memory resource was removed from the global coherency |
| domain of the processor. |
| @retval EFI_INVALID_PARAMETER Length is zero. |
| @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory |
| resource range specified by BaseAddress and Length. |
| @retval EFI_NOT_FOUND One or more bytes of the memory resource range specified by |
| BaseAddress and Length was not added with previous calls to |
| AddMemorySpace(). |
| @retval EFI_ACCESS_DEFINED One or more bytes of the memory resource range specified by |
| BaseAddress and Length has been allocated with AllocateMemorySpace(). |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources to remove the memory |
| resource from the global coherency domain of the processor. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_REMOVE_MEMORY_SPACE)( |
| IN EFI_PHYSICAL_ADDRESS BaseAddress, |
| IN UINT64 Length |
| ); |
| |
| /** |
| Retrieves the descriptor for a memory region containing a specified address. |
| |
| @param BaseAddress The physical address that is the start address of a memory region. |
| @param Descriptor A pointer to a caller allocated descriptor. |
| |
| @retval EFI_SUCCESS The descriptor for the memory resource region containing |
| BaseAddress was returned in Descriptor. |
| @retval EFI_INVALID_PARAMETER Descriptor is NULL. |
| @retval EFI_NOT_FOUND A memory resource range containing BaseAddress was not found. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_GET_MEMORY_SPACE_DESCRIPTOR)( |
| IN EFI_PHYSICAL_ADDRESS BaseAddress, |
| OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor |
| ); |
| |
| /** |
| Modifies the attributes for a memory region in the global coherency domain of the |
| processor. |
| |
| @param BaseAddress The physical address that is the start address of a memory region. |
| @param Length The size in bytes of the memory region. |
| @param Attributes The bit mask of attributes to set for the memory region. |
| |
| @retval EFI_SUCCESS The attributes were set for the memory region. |
| @retval EFI_INVALID_PARAMETER Length is zero. |
| @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the memory |
| resource range specified by BaseAddress and Length. |
| @retval EFI_UNSUPPORTED The bit mask of attributes is not support for the memory resource |
| range specified by BaseAddress and Length. |
| @retval EFI_ACCESS_DEFINED The attributes for the memory resource range specified by |
| BaseAddress and Length cannot be modified. |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources to modify the attributes of |
| the memory resource range. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_SET_MEMORY_SPACE_ATTRIBUTES)( |
| IN EFI_PHYSICAL_ADDRESS BaseAddress, |
| IN UINT64 Length, |
| IN UINT64 Attributes |
| ); |
| |
| /** |
| Returns a map of the memory resources in the global coherency domain of the |
| processor. |
| |
| @param NumberOfDescriptors A pointer to number of descriptors returned in the MemorySpaceMap buffer. |
| @param MemorySpaceMap A pointer to the array of EFI_GCD_MEMORY_SPACE_DESCRIPTORs. |
| |
| @retval EFI_SUCCESS The memory space map was returned in the MemorySpaceMap |
| buffer, and the number of descriptors in MemorySpaceMap was |
| returned in NumberOfDescriptors. |
| @retval EFI_INVALID_PARAMETER NumberOfDescriptors is NULL. |
| @retval EFI_INVALID_PARAMETER MemorySpaceMap is NULL. |
| @retval EFI_OUT_OF_RESOURCES There are not enough resources to allocate MemorySpaceMap. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_GET_MEMORY_SPACE_MAP)( |
| OUT UINTN *NumberOfDescriptors, |
| OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR **MemorySpaceMap |
| ); |
| |
| /** |
| Adds reserved I/O or I/O resources to the global coherency domain of the processor. |
| |
| @param GcdIoType The type of I/O resource being added. |
| @param BaseAddress The physical address that is the start address of the I/O resource being added. |
| @param Length The size in bytes of the I/O resource that is being added. |
| |
| @retval EFI_SUCCESS The I/O resource was added to the global coherency domain of |
| the processor. |
| @retval EFI_INVALID_PARAMETER GcdIoType is invalid. |
| @retval EFI_INVALID_PARAMETER Length is zero. |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources to add the I/O resource to |
| the global coherency domain of the processor. |
| @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the I/O |
| resource range specified by BaseAddress and Length. |
| @retval EFI_ACCESS_DENIED One or more bytes of the I/O resource range specified by |
| BaseAddress and Length conflicts with an I/O resource |
| range that was previously added to the global coherency domain |
| of the processor. |
| @retval EFI_ACCESS_DENIED One or more bytes of the I/O resource range specified by |
| BaseAddress and Length was allocated in a prior call to |
| AllocateIoSpace(). |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_ADD_IO_SPACE)( |
| IN EFI_GCD_IO_TYPE GcdIoType, |
| IN EFI_PHYSICAL_ADDRESS BaseAddress, |
| IN UINT64 Length |
| ); |
| |
| /** |
| Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency |
| domain of the processor. |
| |
| @param GcdAllocateType The type of allocation to perform. |
| @param GcdIoType The type of I/O resource being allocated. |
| @param Alignment The log base 2 of the boundary that BaseAddress must be aligned on output. |
| @param Length The size in bytes of the I/O resource range that is being allocated. |
| @param BaseAddress A pointer to a physical address. |
| @param Imagehandle The image handle of the agent that is allocating the I/O resource. |
| @param DeviceHandle The device handle for which the I/O resource is being allocated. |
| |
| @retval EFI_SUCCESS The I/O resource was allocated from the global coherency domain |
| of the processor. |
| @retval EFI_INVALID_PARAMETER GcdAllocateType is invalid. |
| @retval EFI_INVALID_PARAMETER GcdIoType is invalid. |
| @retval EFI_INVALID_PARAMETER Length is zero. |
| @retval EFI_INVALID_PARAMETER BaseAddress is NULL. |
| @retval EFI_INVALID_PARAMETER ImageHandle is NULL. |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources to allocate the I/O |
| resource from the global coherency domain of the processor. |
| @retval EFI_NOT_FOUND The I/O resource request could not be satisfied. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_ALLOCATE_IO_SPACE)( |
| IN EFI_GCD_ALLOCATE_TYPE GcdAllocateType, |
| IN EFI_GCD_IO_TYPE GcdIoType, |
| IN UINTN Alignment, |
| IN UINT64 Length, |
| IN OUT EFI_PHYSICAL_ADDRESS *BaseAddress, |
| IN EFI_HANDLE ImageHandle, |
| IN EFI_HANDLE DeviceHandle OPTIONAL |
| ); |
| |
| /** |
| Frees nonexistent I/O, reserved I/O, or I/O resources from the global coherency |
| domain of the processor. |
| |
| @param BaseAddress The physical address that is the start address of the I/O resource being freed. |
| @param Length The size in bytes of the I/O resource range that is being freed. |
| |
| @retval EFI_SUCCESS The I/O resource was freed from the global coherency domain of the |
| processor. |
| @retval EFI_INVALID_PARAMETER Length is zero. |
| @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the I/O resource |
| range specified by BaseAddress and Length. |
| @retval EFI_NOT_FOUND The I/O resource range specified by BaseAddress and Length |
| was not allocated with previous calls to AllocateIoSpace(). |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources to free the I/O resource from |
| the global coherency domain of the processor. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_FREE_IO_SPACE)( |
| IN EFI_PHYSICAL_ADDRESS BaseAddress, |
| IN UINT64 Length |
| ); |
| |
| /** |
| Removes reserved I/O or I/O resources from the global coherency domain of the |
| processor. |
| |
| @param BaseAddress A pointer to a physical address that is the start address of the I/O resource being |
| removed. |
| @param Length The size in bytes of the I/O resource that is being removed. |
| |
| @retval EFI_SUCCESS The I/O resource was removed from the global coherency domain |
| of the processor. |
| @retval EFI_INVALID_PARAMETER Length is zero. |
| @retval EFI_UNSUPPORTED The processor does not support one or more bytes of the I/O |
| resource range specified by BaseAddress and Length. |
| @retval EFI_NOT_FOUND One or more bytes of the I/O resource range specified by |
| BaseAddress and Length was not added with previous |
| calls to AddIoSpace(). |
| @retval EFI_ACCESS_DENIED One or more bytes of the I/O resource range specified by |
| BaseAddress and Length has been allocated with |
| AllocateIoSpace(). |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources to remove the I/O |
| resource from the global coherency domain of the processor. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_REMOVE_IO_SPACE)( |
| IN EFI_PHYSICAL_ADDRESS BaseAddress, |
| IN UINT64 Length |
| ); |
| |
| /** |
| Retrieves the descriptor for an I/O region containing a specified address. |
| |
| @param BaseAddress The physical address that is the start address of an I/O region. |
| @param Descriptor A pointer to a caller allocated descriptor. |
| |
| @retval EFI_SUCCESS The descriptor for the I/O resource region containing |
| BaseAddress was returned in Descriptor. |
| @retval EFI_INVALID_PARAMETER Descriptor is NULL. |
| @retval EFI_NOT_FOUND An I/O resource range containing BaseAddress was not found. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_GET_IO_SPACE_DESCRIPTOR)( |
| IN EFI_PHYSICAL_ADDRESS BaseAddress, |
| OUT EFI_GCD_IO_SPACE_DESCRIPTOR *Descriptor |
| ); |
| |
| /** |
| Returns a map of the I/O resources in the global coherency domain of the processor. |
| |
| @param NumberOfDescriptors A pointer to number of descriptors returned in the IoSpaceMap buffer. |
| @param MemorySpaceMap A pointer to the array of EFI_GCD_IO_SPACE_DESCRIPTORs. |
| |
| @retval EFI_SUCCESS The I/O space map was returned in the IoSpaceMap buffer, and |
| the number of descriptors in IoSpaceMap was returned in |
| NumberOfDescriptors. |
| @retval EFI_INVALID_PARAMETER NumberOfDescriptors is NULL. |
| @retval EFI_INVALID_PARAMETER IoSpaceMap is NULL. |
| @retval EFI_OUT_OF_RESOURCES There are not enough resources to allocate IoSpaceMap. |
| |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_GET_IO_SPACE_MAP)( |
| OUT UINTN *NumberOfDescriptors, |
| OUT EFI_GCD_IO_SPACE_DESCRIPTOR **IoSpaceMap |
| ); |
| |
| |
| |
| /** |
| Loads and executed DXE drivers from firmware volumes. |
| |
| The Dispatch() function searches for DXE drivers in firmware volumes that have been |
| installed since the last time the Dispatch() service was called. It then evaluates |
| the dependency expressions of all the DXE drivers and loads and executes those DXE |
| drivers whose dependency expression evaluate to TRUE. This service must interact with |
| the Security Architectural Protocol to authenticate DXE drivers before they are executed. |
| This process is continued until no more DXE drivers can be executed. |
| |
| @retval EFI_SUCCESS One or more DXE driver were dispatched. |
| @retval EFI_NOT_FOUND No DXE drivers were dispatched. |
| @retval EFI_ALREADY_STARTED An attempt is being made to start the DXE Dispatcher recursively. |
| Thus no action was taken. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_DISPATCH)( |
| VOID |
| ); |
| |
| /** |
| Clears the Schedule on Request (SOR) flag for a component that is stored in a firmware volume. |
| |
| @param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName. |
| @param FileName A pointer to the name of the file in a firmware volume. |
| |
| @retval EFI_SUCCESS The DXE driver was found and its SOR bit was cleared. |
| @retval EFI_NOT_FOUND The DXE driver does not exist, or the DXE driver exists and its SOR |
| bit is not set. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_SCHEDULE)( |
| IN EFI_HANDLE FirmwareVolumeHandle, |
| IN CONST EFI_GUID *FileName |
| ); |
| |
| /** |
| Promotes a file stored in a firmware volume from the untrusted to the trusted state. |
| |
| @param FirmwareVolumeHandle The handle of the firmware volume that contains the file specified by FileName. |
| @param DriverName A pointer to the name of the file in a firmware volume. |
| |
| @return Status of promoting FFS from untrusted to trusted |
| state. |
| @retval EFI_NOT_FOUND The file was not found in the untrusted state. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_TRUST)( |
| IN EFI_HANDLE FirmwareVolumeHandle, |
| IN CONST EFI_GUID *FileName |
| ); |
| |
| /** |
| Creates a firmware volume handle for a firmware volume that is present in system memory. |
| |
| @param FirmwareVolumeHeader A pointer to the header of the firmware volume. |
| @param Size The size, in bytes, of the firmware volume. |
| @param FirmwareVolumeHandle On output, a pointer to the created handle. |
| |
| @retval EFI_SUCCESS The EFI_FIRMWARE_VOLUME_PROTOCOL and |
| EFI_DEVICE_PATH_PROTOCOL were installed onto |
| FirmwareVolumeHandle for the firmware volume described |
| by FirmwareVolumeHeader and Size. |
| @retval EFI_VOLUME_CORRUPTED The firmware volume described by FirmwareVolumeHeader |
| and Size is corrupted. |
| @retval EFI_OUT_OF_RESOURCES There are not enough system resources available to produce the |
| EFI_FIRMWARE_VOLUME_PROTOCOL and EFI_DEVICE_PATH_PROTOCOL |
| for the firmware volume described by FirmwareVolumeHeader and Size. |
| |
| **/ |
| typedef |
| EFI_STATUS |
| (EFIAPI *EFI_PROCESS_FIRMWARE_VOLUME)( |
| IN CONST VOID *FirmwareVolumeHeader, |
| IN UINTN Size, |
| OUT EFI_HANDLE *FirmwareVolumeHandle |
| ); |
| |
| // |
| // DXE Services Table |
| // |
| #define DXE_SERVICES_SIGNATURE 0x565245535f455844ULL |
| #define DXE_SERVICES_REVISION ((1<<16) | (00)) |
| |
| typedef struct { |
| EFI_TABLE_HEADER Hdr; |
| |
| // |
| // Global Coherency Domain Services |
| // |
| EFI_ADD_MEMORY_SPACE AddMemorySpace; |
| EFI_ALLOCATE_MEMORY_SPACE AllocateMemorySpace; |
| EFI_FREE_MEMORY_SPACE FreeMemorySpace; |
| EFI_REMOVE_MEMORY_SPACE RemoveMemorySpace; |
| EFI_GET_MEMORY_SPACE_DESCRIPTOR GetMemorySpaceDescriptor; |
| EFI_SET_MEMORY_SPACE_ATTRIBUTES SetMemorySpaceAttributes; |
| EFI_GET_MEMORY_SPACE_MAP GetMemorySpaceMap; |
| EFI_ADD_IO_SPACE AddIoSpace; |
| EFI_ALLOCATE_IO_SPACE AllocateIoSpace; |
| EFI_FREE_IO_SPACE FreeIoSpace; |
| EFI_REMOVE_IO_SPACE RemoveIoSpace; |
| EFI_GET_IO_SPACE_DESCRIPTOR GetIoSpaceDescriptor; |
| EFI_GET_IO_SPACE_MAP GetIoSpaceMap; |
| |
| // |
| // Dispatcher Services |
| // |
| EFI_DISPATCH Dispatch; |
| EFI_SCHEDULE Schedule; |
| EFI_TRUST Trust; |
| // |
| // Service to process a single firmware volume found in a capsule |
| // |
| EFI_PROCESS_FIRMWARE_VOLUME ProcessFirmwareVolume; |
| } DXE_SERVICES; |
| |
| typedef DXE_SERVICES EFI_DXE_SERVICES; |
| |
| #endif |