123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713 |
- /** @file
- Include file matches things in PI.
-
- Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
- This program and the accompanying materials are licensed and made available under
- the terms and conditions of the BSD License that 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 <ipxe/efi/Uefi/UefiMultiPhase.h>
- #include <ipxe/efi/Pi/PiMultiPhase.h>
-
- ///
- /// Global Coherencey Domain types - Memory type.
- ///
- typedef enum {
- ///
- /// A memory region that is visible to the boot processor. However, there are no system
- /// components that are currently decoding this memory region.
- ///
- EfiGcdMemoryTypeNonExistent,
- ///
- /// A memory region that is visible to the boot processor. This memory region is being
- /// decoded by a system component, but the memory region is not considered to be either
- /// system memory or memory-mapped I/O.
- ///
- EfiGcdMemoryTypeReserved,
- ///
- /// A memory region that is visible to the boot processor. A memory controller is
- /// currently decoding this memory region and the memory controller is producing a
- /// tested system memory region that is available to the memory services.
- ///
- EfiGcdMemoryTypeSystemMemory,
- ///
- /// A memory region that is visible to the boot processor. This memory region is
- /// currently being decoded by a component as memory-mapped I/O that can be used to
- /// access I/O devices in the platform.
- ///
- EfiGcdMemoryTypeMemoryMappedIo,
- EfiGcdMemoryTypeMaximum
- } EFI_GCD_MEMORY_TYPE;
-
- ///
- /// Global Coherencey Domain types - IO type.
- ///
- typedef enum {
- ///
- /// An I/O region that is visible to the boot processor. However, there are no system
- /// components that are currently decoding this I/O region.
- ///
- EfiGcdIoTypeNonExistent,
- ///
- /// An I/O region that is visible to the boot processor. This I/O region is currently being
- /// decoded by a system component, but the I/O region cannot be used to access I/O devices.
- ///
- EfiGcdIoTypeReserved,
- ///
- /// An I/O region that is visible to the boot processor. This I/O region is currently being
- /// decoded by a system component that is producing I/O ports that can be used to access I/O devices.
- ///
- EfiGcdIoTypeIo,
- EfiGcdIoTypeMaximum
- } EFI_GCD_IO_TYPE;
-
- ///
- /// The type of allocation to perform.
- ///
- typedef enum {
- ///
- /// The GCD memory space map is searched from the lowest address up to the highest address
- /// looking for unallocated memory ranges.
- ///
- EfiGcdAllocateAnySearchBottomUp,
- ///
- /// The GCD memory space map is searched from the lowest address up
- /// to the specified MaxAddress looking for unallocated memory ranges.
- ///
- EfiGcdAllocateMaxAddressSearchBottomUp,
- ///
- /// The GCD memory space map is checked to see if the memory range starting
- /// at the specified Address is available.
- ///
- EfiGcdAllocateAddress,
- ///
- /// The GCD memory space map is searched from the highest address down to the lowest address
- /// looking for unallocated memory ranges.
- ///
- EfiGcdAllocateAnySearchTopDown,
- ///
- /// The GCD memory space map is searched from the specified MaxAddress
- /// down to the lowest address looking for unallocated memory ranges.
- ///
- 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 {
- ///
- /// The table header for the DXE Services Table.
- /// This header contains the DXE_SERVICES_SIGNATURE and DXE_SERVICES_REVISION values.
- ///
- 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;
-
-
- /**
- The function prototype for invoking a function on an Application Processor.
-
- This definition is used by the UEFI MP Serices Protocol, and the
- PI SMM System Table.
-
- @param[in,out] Buffer The pointer to private data buffer.
- **/
- typedef
- VOID
- (EFIAPI *EFI_AP_PROCEDURE)(
- IN OUT VOID *Buffer
- );
-
- #endif
|