TianoCore EDK2 master
|
#include <PiDxe.h>
#include <Protocol/LoadedImage.h>
#include <Protocol/GuidedSectionExtraction.h>
#include <Protocol/DevicePath.h>
#include <Protocol/Runtime.h>
#include <Protocol/LoadFile.h>
#include <Protocol/LoadFile2.h>
#include <Protocol/DriverBinding.h>
#include <Protocol/VariableWrite.h>
#include <Protocol/PlatformDriverOverride.h>
#include <Protocol/Variable.h>
#include <Protocol/Timer.h>
#include <Protocol/SimpleFileSystem.h>
#include <Protocol/Bds.h>
#include <Protocol/RealTimeClock.h>
#include <Protocol/WatchdogTimer.h>
#include <Protocol/FirmwareVolume2.h>
#include <Protocol/MonotonicCounter.h>
#include <Protocol/StatusCode.h>
#include <Protocol/Decompress.h>
#include <Protocol/LoadPe32Image.h>
#include <Protocol/Security.h>
#include <Protocol/Security2.h>
#include <Protocol/Reset.h>
#include <Protocol/Cpu.h>
#include <Protocol/Metronome.h>
#include <Protocol/FirmwareVolumeBlock.h>
#include <Protocol/Capsule.h>
#include <Protocol/BusSpecificDriverOverride.h>
#include <Protocol/DriverFamilyOverride.h>
#include <Protocol/TcgService.h>
#include <Protocol/HiiPackageList.h>
#include <Protocol/SmmBase2.h>
#include <Protocol/PeCoffImageEmulator.h>
#include <Guid/MemoryTypeInformation.h>
#include <Guid/FirmwareFileSystem2.h>
#include <Guid/FirmwareFileSystem3.h>
#include <Guid/HobList.h>
#include <Guid/DebugImageInfoTable.h>
#include <Guid/FileInfo.h>
#include <Guid/Apriori.h>
#include <Guid/DxeServices.h>
#include <Guid/MemoryAllocationHob.h>
#include <Guid/EventLegacyBios.h>
#include <Guid/EventGroup.h>
#include <Guid/EventExitBootServiceFailed.h>
#include <Guid/LoadModuleAtFixedAddress.h>
#include <Guid/IdleLoopEvent.h>
#include <Guid/VectorHandoffTable.h>
#include <Ppi/VectorHandoffInfo.h>
#include <Guid/MemoryProfile.h>
#include <Library/DxeCoreEntryPoint.h>
#include <Library/DebugLib.h>
#include <Library/UefiLib.h>
#include <Library/BaseLib.h>
#include <Library/HobLib.h>
#include <Library/PerformanceLib.h>
#include <Library/UefiDecompressLib.h>
#include <Library/ExtractGuidedSectionLib.h>
#include <Library/CacheMaintenanceLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/PeCoffLib.h>
#include <Library/PeCoffGetEntryPointLib.h>
#include <Library/PeCoffExtraActionLib.h>
#include <Library/PcdLib.h>
#include <Library/MemoryAllocationLib.h>
#include <Library/DevicePathLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/ReportStatusCodeLib.h>
#include <Library/DxeServicesLib.h>
#include <Library/DebugAgentLib.h>
#include <Library/CpuExceptionHandlerLib.h>
#include <Library/OrderedCollectionLib.h>
Go to the source code of this file.
Data Structures | |
struct | EFI_CORE_PROTOCOL_NOTIFY_ENTRY |
struct | KNOWN_HANDLE |
struct | EFI_CORE_DRIVER_ENTRY |
struct | EFI_GCD_MAP_ENTRY |
struct | LOADED_IMAGE_PRIVATE_DATA |
Macros | |
#define | EFI_MEMORY_PRESENT 0x0100000000000000ULL |
#define | EFI_MEMORY_INITIALIZED 0x0200000000000000ULL |
#define | EFI_MEMORY_TESTED 0x0400000000000000ULL |
#define | EFI_MEMORY_PORT_IO 0x4000000000000000ULL |
#define | EFI_DEP_REPLACE_TRUE 0xff |
#define | DEPEX_STACK_SIZE_INCREMENT 0x1000 |
#define | KNOWN_HANDLE_SIGNATURE SIGNATURE_32('k','n','o','w') |
#define | EFI_CORE_DRIVER_ENTRY_SIGNATURE SIGNATURE_32('d','r','v','r') |
#define | EFI_GCD_MAP_SIGNATURE SIGNATURE_32('g','c','d','m') |
#define | LOADED_IMAGE_PRIVATE_DATA_SIGNATURE SIGNATURE_32('l','d','r','i') |
#define | LOADED_IMAGE_PRIVATE_DATA_FROM_THIS(a) CR(a, LOADED_IMAGE_PRIVATE_DATA, Info, LOADED_IMAGE_PRIVATE_DATA_SIGNATURE) |
The internal header file includes the common header files, defines internal structure and functions used by DxeCore module.
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent
Definition in file DxeMain.h.
#define DEPEX_STACK_SIZE_INCREMENT 0x1000 |
#define EFI_CORE_DRIVER_ENTRY_SIGNATURE SIGNATURE_32('d','r','v','r') |
#define EFI_DEP_REPLACE_TRUE 0xff |
EFI_DEP_REPLACE_TRUE - Used to dynamically patch the dependency expression to save time. A EFI_DEP_PUSH is evaluated one an replaced with EFI_DEP_REPLACE_TRUE. If PI spec's Vol 2 Driver Execution Environment Core Interface use 0xff as new DEPEX opcode. EFI_DEP_REPLACE_TRUE should be defined to a new value that is not conflicting with PI spec.
#define EFI_GCD_MAP_SIGNATURE SIGNATURE_32('g','c','d','m') |
#define KNOWN_HANDLE_SIGNATURE SIGNATURE_32('k','n','o','w') |
#define LOADED_IMAGE_PRIVATE_DATA_FROM_THIS | ( | a | ) | CR(a, LOADED_IMAGE_PRIVATE_DATA, Info, LOADED_IMAGE_PRIVATE_DATA_SIGNATURE) |
#define LOADED_IMAGE_PRIVATE_DATA_SIGNATURE SIGNATURE_32('l','d','r','i') |
EFI_STATUS EFIAPI ApplyMemoryProtectionPolicy | ( | IN EFI_MEMORY_TYPE | OldType, |
IN EFI_MEMORY_TYPE | NewType, | ||
IN EFI_PHYSICAL_ADDRESS | Memory, | ||
IN UINT64 | Length | ||
) |
Manage memory permission attributes on a memory range, according to the configured DXE memory protection policy.
OldType | The old memory type of the range |
NewType | The new memory type of the range |
Memory | The base address of the range |
Length | The size of the range (in bytes) |
Manage memory permission attributes on a memory range, according to the configured DXE memory protection policy.
OldType | The old memory type of the range |
NewType | The new memory type of the range |
Memory | The base address of the range |
Length | The size of the range (in bytes) |
Definition at line 1035 of file MemoryProtection.c.
VOID CalculateEfiHdrCrc | ( | IN OUT EFI_TABLE_HEADER * | Hdr | ) |
Calcualte the 32-bit CRC in a EFI table using the service provided by the gRuntime service.
Hdr | Pointer to an EFI standard header |
Calculate the 32-bit CRC in a EFI table using the service provided by the gRuntime service.
Hdr | Pointer to an EFI standard header |
EFI_STATUS EFIAPI CloseSectionStream | ( | IN UINTN | StreamHandleToClose, |
IN BOOLEAN | FreeStreamBuffer | ||
) |
SEP member function. Deletes an existing section stream
StreamHandleToClose | Indicates the stream to close |
FreeStreamBuffer | TRUE - Need to free stream buffer; FALSE - No need to free stream buffer. |
EFI_SUCCESS | The section stream is closed sucessfully. |
EFI_OUT_OF_RESOURCES | Memory allocation failed. |
EFI_INVALID_PARAMETER | Section stream does not end concident with end of last section. |
Definition at line 1417 of file CoreSectionExtraction.c.
VOID CoreAcquireGcdMemoryLock | ( | VOID | ) |
EFI_STATUS CoreAcquireLockOrFail | ( | IN EFI_LOCK * | Lock | ) |
Initialize a basic mutual exclusion lock. Each lock provides mutual exclusion access at it's task priority level. Since there is no-premption (at any TPL) or multiprocessor support, acquiring the lock only consists of raising to the locks TPL.
Lock | The EFI_LOCK structure to initialize |
EFI_SUCCESS | Lock Owned. |
EFI_ACCESS_DENIED | Reentrant Lock Acquisition, Lock not Owned. |
EFI_STATUS EFIAPI CoreAddIoSpace | ( | IN EFI_GCD_IO_TYPE | GcdIoType, |
IN EFI_PHYSICAL_ADDRESS | BaseAddress, | ||
IN UINT64 | Length | ||
) |
Adds reserved I/O or I/O resources to the global coherency domain of the processor.
GcdIoType | IO type of the segment. |
BaseAddress | Base address of the segment. |
Length | Length of the segment. |
EFI_SUCCESS | Merged this segment into GCD map. |
EFI_INVALID_PARAMETER | Parameter not valid |
VOID CoreAddMemoryDescriptor | ( | IN EFI_MEMORY_TYPE | Type, |
IN EFI_PHYSICAL_ADDRESS | Start, | ||
IN UINT64 | NumberOfPages, | ||
IN UINT64 | Attribute | ||
) |
Called to initialize the memory map and add descriptors to the current descriptor list. The first descriptor that is added must be general usable memory as the addition allocates heap.
Type | The type of memory to add |
Start | The starting address in the memory range Must be page aligned |
NumberOfPages | The number of pages in the range |
Attribute | Attributes of the memory to add |
EFI_STATUS EFIAPI CoreAddMemorySpace | ( | IN EFI_GCD_MEMORY_TYPE | GcdMemoryType, |
IN EFI_PHYSICAL_ADDRESS | BaseAddress, | ||
IN UINT64 | Length, | ||
IN UINT64 | Capabilities | ||
) |
Adds reserved memory, system memory, or memory-mapped I/O resources to the global coherency domain of the processor.
GcdMemoryType | Memory type of the memory space. |
BaseAddress | Base address of the memory space. |
Length | Length of the memory space. |
Capabilities | alterable attributes of the memory space. |
EFI_SUCCESS | Merged this memory space into GCD map. |
EFI_STATUS CoreAllEfiServicesAvailable | ( | VOID | ) |
Return TRUE if all AP services are available.
EFI_SUCCESS | All AP services are available |
EFI_NOT_FOUND | At least one AP service is not available |
Definition at line 80 of file DxeProtocolNotify.c.
EFI_STATUS EFIAPI CoreAllocateIoSpace | ( | 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 | ||
) |
Allocates nonexistent I/O, reserved I/O, or I/O resources from the global coherency domain of the processor.
GcdAllocateType | The type of allocate operation |
GcdIoType | The desired IO type |
Alignment | Align with 2^Alignment |
Length | Length to allocate |
BaseAddress | Base address to allocate |
ImageHandle | The image handle consume the allocated space. |
DeviceHandle | The device handle consume the allocated space. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_NOT_FOUND | No descriptor contains the desired space. |
EFI_SUCCESS | IO space successfully allocated. |
EFI_STATUS EFIAPI CoreAllocateMemorySpace | ( | 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 | ||
) |
Allocates nonexistent memory, reserved memory, system memory, or memorymapped I/O resources from the global coherency domain of the processor.
GcdAllocateType | The type of allocate operation |
GcdMemoryType | The desired memory type |
Alignment | Align with 2^Alignment |
Length | Length to allocate |
BaseAddress | Base address to allocate |
ImageHandle | The image handle consume the allocated space. |
DeviceHandle | The device handle consume the allocated space. |
EFI_INVALID_PARAMETER | Invalid parameter. |
EFI_NOT_FOUND | No descriptor contains the desired space. |
EFI_SUCCESS | Memory space successfully allocated. |
EFI_STATUS EFIAPI CoreAllocatePages | ( | IN EFI_ALLOCATE_TYPE | Type, |
IN EFI_MEMORY_TYPE | MemoryType, | ||
IN UINTN | NumberOfPages, | ||
IN OUT EFI_PHYSICAL_ADDRESS * | Memory | ||
) |
Allocates pages from the memory map.
Type | The type of allocation to perform |
MemoryType | The type of memory to turn the allocated pages into |
NumberOfPages | The number of pages to allocate |
Memory | A pointer to receive the base allocated memory address |
EFI_INVALID_PARAMETER | Parameters violate checking rules defined in spec. |
EFI_NOT_FOUND | Could not allocate pages match the requirement. |
EFI_OUT_OF_RESOURCES | No enough pages to allocate. |
EFI_SUCCESS | Pages successfully allocated. |
EFI_STATUS EFIAPI CoreAllocatePool | ( | IN EFI_MEMORY_TYPE | PoolType, |
IN UINTN | Size, | ||
OUT VOID ** | Buffer | ||
) |
Allocate pool of a particular type.
PoolType | Type of pool to allocate |
Size | The amount of pool to allocate |
Buffer | The address to return a pointer to the allocated pool |
EFI_INVALID_PARAMETER | PoolType not valid or Buffer is NULL |
EFI_OUT_OF_RESOURCES | Size exceeds max pool size or allocation failed. |
EFI_SUCCESS | Pool successfully allocated. |
Allocate pool of a particular type.
PoolType | Type of pool to allocate |
Size | The amount of pool to allocate |
Buffer | The address to return a pointer to the allocated pool |
EFI_INVALID_PARAMETER | Buffer is NULL. PoolType is in the range EfiMaxMemoryType..0x6FFFFFFF. PoolType is EfiPersistentMemory. |
EFI_OUT_OF_RESOURCES | Size exceeds max pool size or allocation failed. |
EFI_SUCCESS | Pool successfully allocated. |
EFI_STATUS EFIAPI CoreCheckEvent | ( | IN EFI_EVENT | UserEvent | ) |
EFI_STATUS EFIAPI CoreCloseEvent | ( | IN EFI_EVENT | UserEvent | ) |
EFI_STATUS EFIAPI CoreCloseProtocol | ( | IN EFI_HANDLE | UserHandle, |
IN EFI_GUID * | Protocol, | ||
IN EFI_HANDLE | AgentHandle, | ||
IN EFI_HANDLE | ControllerHandle | ||
) |
Closes a protocol on a handle that was opened using OpenProtocol().
UserHandle | The handle for the protocol interface that was previously opened with OpenProtocol(), and is now being closed. |
Protocol | The published unique identifier of the protocol. It is the caller's responsibility to pass in a valid GUID. |
AgentHandle | The handle of the agent that is closing the protocol interface. |
ControllerHandle | If the agent that opened a protocol is a driver that follows the EFI Driver Model, then this parameter is the controller handle that required the protocol interface. If the agent does not follow the EFI Driver Model, then this parameter is optional and may be NULL. |
EFI_SUCCESS | The protocol instance was closed. |
EFI_INVALID_PARAMETER | Handle, AgentHandle or ControllerHandle is not a valid EFI_HANDLE. |
EFI_NOT_FOUND | Can not find the specified protocol or AgentHandle. |
EFI_STATUS EFIAPI CoreConnectController | ( | IN EFI_HANDLE | ControllerHandle, |
IN EFI_HANDLE *DriverImageHandle | OPTIONAL, | ||
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath | OPTIONAL, | ||
IN BOOLEAN | Recursive | ||
) |
Connects one or more drivers to a controller.
ControllerHandle | The handle of the controller to which driver(s) are to be connected. |
DriverImageHandle | A pointer to an ordered list handles that support the EFI_DRIVER_BINDING_PROTOCOL. |
RemainingDevicePath | A pointer to the device path that specifies a child of the controller specified by ControllerHandle. |
Recursive | If TRUE, then ConnectController() is called recursively until the entire tree of controllers below the controller specified by ControllerHandle have been created. If FALSE, then the tree of controllers is only expanded one level. |
EFI_SUCCESS | 1) One or more drivers were connected to ControllerHandle. 2) No drivers were connected to ControllerHandle, but RemainingDevicePath is not NULL, and it is an End Device Path Node. |
EFI_INVALID_PARAMETER | ControllerHandle is NULL. |
EFI_NOT_FOUND | 1) There are no EFI_DRIVER_BINDING_PROTOCOL instances present in the system. 2) No drivers were connected to ControllerHandle. |
EFI_SECURITY_VIOLATION | The user has no permission to start UEFI device drivers on the device path associated with the ControllerHandle or specified by the RemainingDevicePath. |
Definition at line 44 of file DriverSupport.c.
VOID CoreConnectHandlesByKey | ( | UINT64 | Key | ) |
EFI_STATUS EFIAPI CoreCreateEvent | ( | IN UINT32 | Type, |
IN EFI_TPL | NotifyTpl, | ||
IN EFI_EVENT_NOTIFY NotifyFunction | OPTIONAL, | ||
IN VOID *NotifyContext | OPTIONAL, | ||
OUT EFI_EVENT * | Event | ||
) |
Creates an event.
Type | The type of event to create and its mode and attributes |
NotifyTpl | The task priority level of event notifications |
NotifyFunction | Pointer to the events notification function |
NotifyContext | Pointer to the notification functions context; corresponds to parameter "Context" in the notification function |
Event | Pointer to the newly created event if the call succeeds; undefined otherwise |
EFI_SUCCESS | The event structure was created |
EFI_INVALID_PARAMETER | One of the parameters has an invalid value |
EFI_OUT_OF_RESOURCES | The event could not be allocated |
EFI_STATUS EFIAPI CoreCreateEventEx | ( | IN UINT32 | Type, |
IN EFI_TPL | NotifyTpl, | ||
IN EFI_EVENT_NOTIFY NotifyFunction | OPTIONAL, | ||
IN CONST VOID *NotifyContext | OPTIONAL, | ||
IN CONST EFI_GUID *EventGroup | OPTIONAL, | ||
OUT EFI_EVENT * | Event | ||
) |
Creates an event in a group.
Type | The type of event to create and its mode and attributes |
NotifyTpl | The task priority level of event notifications |
NotifyFunction | Pointer to the events notification function |
NotifyContext | Pointer to the notification functions context; corresponds to parameter "Context" in the notification function |
EventGroup | GUID for EventGroup if NULL act the same as gBS->CreateEvent(). |
Event | Pointer to the newly created event if the call succeeds; undefined otherwise |
EFI_SUCCESS | The event structure was created |
EFI_INVALID_PARAMETER | One of the parameters has an invalid value |
EFI_OUT_OF_RESOURCES | The event could not be allocated |
EFI_STATUS EFIAPI CoreCreateEventInternal | ( | IN UINT32 | Type, |
IN EFI_TPL | NotifyTpl, | ||
IN EFI_EVENT_NOTIFY NotifyFunction | OPTIONAL, | ||
IN CONST VOID *NotifyContext | OPTIONAL, | ||
IN CONST EFI_GUID *EventGroup | OPTIONAL, | ||
OUT EFI_EVENT * | Event | ||
) |
Creates a general-purpose event structure
Type | The type of event to create and its mode and attributes |
NotifyTpl | The task priority level of event notifications |
NotifyFunction | Pointer to the events notification function |
NotifyContext | Pointer to the notification functions context; corresponds to parameter "Context" in the notification function |
EventGroup | GUID for EventGroup if NULL act the same as gBS->CreateEvent(). |
Event | Pointer to the newly created event if the call succeeds; undefined otherwise |
EFI_SUCCESS | The event structure was created |
EFI_INVALID_PARAMETER | One of the parameters has an invalid value |
EFI_OUT_OF_RESOURCES | The event could not be allocated |
EFI_STATUS EFIAPI CoreDisconnectController | ( | IN EFI_HANDLE | ControllerHandle, |
IN EFI_HANDLE DriverImageHandle | OPTIONAL, | ||
IN EFI_HANDLE ChildHandle | OPTIONAL | ||
) |
Disonnects a controller from a driver
ControllerHandle | ControllerHandle The handle of the controller from which driver(s) are to be disconnected. |
DriverImageHandle | DriverImageHandle The driver to disconnect from ControllerHandle. |
ChildHandle | ChildHandle The handle of the child to destroy. |
EFI_SUCCESS | One or more drivers were disconnected from the controller. |
EFI_SUCCESS | On entry, no drivers are managing ControllerHandle. |
EFI_SUCCESS | DriverImageHandle is not NULL, and on entry DriverImageHandle is not managing ControllerHandle. |
EFI_INVALID_PARAMETER | ControllerHandle is NULL. |
EFI_INVALID_PARAMETER | DriverImageHandle is not NULL, and it is not a valid EFI_HANDLE. |
EFI_INVALID_PARAMETER | ChildHandle is not NULL, and it is not a valid EFI_HANDLE. |
EFI_OUT_OF_RESOURCES | There are not enough resources available to disconnect any drivers from ControllerHandle. |
EFI_DEVICE_ERROR | The controller could not be disconnected because of a device error. |
Definition at line 737 of file DriverSupport.c.
EFI_STATUS EFIAPI CoreDispatcher | ( | VOID | ) |
This is the main Dispatcher for DXE and it exits when there are no more drivers to run. Drain the mScheduledQueue and load and start a PE image for each driver. Search the mDiscoveredList to see if any driver can be placed on the mScheduledQueue. If no drivers are placed on the mScheduledQueue exit the function. On exit it is assumed the Bds() will be called, and when the Bds() exits the Dispatcher will be called again.
EFI_ALREADY_STARTED | The DXE Dispatcher is already running |
EFI_NOT_FOUND | No DXE Drivers were dispatched |
EFI_SUCCESS | One or more DXE Drivers were dispatched |
Definition at line 400 of file Dispatcher.c.
VOID CoreDisplayDiscoveredNotDispatched | ( | VOID | ) |
Traverse the discovered list for any drivers that were discovered but not loaded because the dependency experessions evaluated to false.
Definition at line 1471 of file Dispatcher.c.
VOID CoreDisplayMissingArchProtocols | ( | VOID | ) |
Displays Architectural protocols that were not loaded and are required for DXE core to function. Only used in Debug Builds.
Definition at line 262 of file DxeProtocolNotify.c.
EFI_STATUS EFIAPI CoreEfiNotAvailableYetArg1 | ( | UINTN | Arg1 | ) |
EFI_STATUS EFIAPI CoreEfiNotAvailableYetArg2 | ( | UINTN | Arg1, |
UINTN | Arg2 | ||
) |
EFI_STATUS EFIAPI CoreEfiNotAvailableYetArg3 | ( | UINTN | Arg1, |
UINTN | Arg2, | ||
UINTN | Arg3 | ||
) |
EFI_STATUS EFIAPI CoreEfiNotAvailableYetArg4 | ( | UINTN | Arg1, |
UINTN | Arg2, | ||
UINTN | Arg3, | ||
UINTN | Arg4 | ||
) |
EFI_STATUS EFIAPI CoreExit | ( | IN EFI_HANDLE | ImageHandle, |
IN EFI_STATUS | Status, | ||
IN UINTN | ExitDataSize, | ||
IN CHAR16 *ExitData | OPTIONAL | ||
) |
Terminates the currently loaded EFI image and returns control to boot services.
ImageHandle | Handle that identifies the image. This parameter is passed to the image on entry. |
Status | The image's exit code. |
ExitDataSize | The size, in bytes, of ExitData. Ignored if ExitStatus is EFI_SUCCESS. |
ExitData | Pointer to a data buffer that includes a Null-terminated Unicode string, optionally followed by additional binary data. The string is a description that the caller may use to further indicate the reason for the image's exit. |
EFI_INVALID_PARAMETER | Image handle is NULL or it is not current image. |
EFI_SUCCESS | Successfully terminates the currently loaded EFI image. |
EFI_ACCESS_DENIED | Should never reach there. |
EFI_OUT_OF_RESOURCES | Could not allocate pool |
EFI_STATUS EFIAPI CoreExitBootServices | ( | IN EFI_HANDLE | ImageHandle, |
IN UINTN | MapKey | ||
) |
EFI_STATUS EFIAPI CoreFreeIoSpace | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length | ||
) |
EFI_STATUS EFIAPI CoreFreeMemorySpace | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length | ||
) |
Frees nonexistent memory, reserved memory, system memory, or memory-mapped I/O resources from the global coherency domain of the processor.
BaseAddress | Base address of the memory space. |
Length | Length of the memory space. |
EFI_SUCCESS | Space successfully freed. |
EFI_STATUS EFIAPI CoreFreePages | ( | IN EFI_PHYSICAL_ADDRESS | Memory, |
IN UINTN | NumberOfPages | ||
) |
Frees previous allocated pages.
Memory | Base address of memory being freed |
NumberOfPages | The number of pages to free |
EFI_NOT_FOUND | Could not find the entry that covers the range |
EFI_INVALID_PARAMETER | Address not aligned |
EFI_STATUS EFIAPI CoreFreePool | ( | IN VOID * | Buffer | ) |
UINT64 CoreGetHandleDatabaseKey | ( | VOID | ) |
EFI_STATUS EFIAPI CoreGetIoSpaceDescriptor | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
OUT EFI_GCD_IO_SPACE_DESCRIPTOR * | Descriptor | ||
) |
EFI_STATUS EFIAPI CoreGetIoSpaceMap | ( | OUT UINTN * | NumberOfDescriptors, |
OUT EFI_GCD_IO_SPACE_DESCRIPTOR ** | IoSpaceMap | ||
) |
Returns a map of the I/O resources in the global coherency domain of the processor.
NumberOfDescriptors | Number of descriptors. |
IoSpaceMap | Descriptor array |
EFI_INVALID_PARAMETER | Invalid parameter |
EFI_OUT_OF_RESOURCES | No enough buffer to allocate |
EFI_SUCCESS | Successfully get IO space map. |
EFI_STATUS EFIAPI CoreGetMemoryMap | ( | IN OUT UINTN * | MemoryMapSize, |
IN OUT EFI_MEMORY_DESCRIPTOR * | MemoryMap, | ||
OUT UINTN * | MapKey, | ||
OUT UINTN * | DescriptorSize, | ||
OUT UINT32 * | DescriptorVersion | ||
) |
This function returns a copy of the current memory map. The map is an array of memory descriptors, each of which describes a contiguous block of memory.
MemoryMapSize | A pointer to the size, in bytes, of the MemoryMap buffer. On input, this is the size of the buffer allocated by the caller. On output, it is the size of the buffer returned by the firmware if the buffer was large enough, or the size of the buffer needed to contain the map if the buffer was too small. |
MemoryMap | A pointer to the buffer in which firmware places the current memory map. |
MapKey | A pointer to the location in which firmware returns the key for the current memory map. |
DescriptorSize | A pointer to the location in which firmware returns the size, in bytes, of an individual EFI_MEMORY_DESCRIPTOR. |
DescriptorVersion | A pointer to the location in which firmware returns the version number associated with the EFI_MEMORY_DESCRIPTOR. |
EFI_SUCCESS | The memory map was returned in the MemoryMap buffer. |
EFI_BUFFER_TOO_SMALL | The MemoryMap buffer was too small. The current buffer size needed to hold the memory map is returned in MemoryMapSize. |
EFI_INVALID_PARAMETER | One of the parameters has an invalid value. |
EFI_STATUS EFIAPI CoreGetMemorySpaceDescriptor | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR * | Descriptor | ||
) |
EFI_STATUS EFIAPI CoreGetMemorySpaceMap | ( | OUT UINTN * | NumberOfDescriptors, |
OUT EFI_GCD_MEMORY_SPACE_DESCRIPTOR ** | MemorySpaceMap | ||
) |
Returns a map of the memory resources in the global coherency domain of the processor.
NumberOfDescriptors | Number of descriptors. |
MemorySpaceMap | Descriptor array |
EFI_INVALID_PARAMETER | Invalid parameter |
EFI_OUT_OF_RESOURCES | No enough buffer to allocate |
EFI_SUCCESS | Successfully get memory space map. |
EFI_STATUS EFIAPI CoreHandleProtocol | ( | IN EFI_HANDLE | UserHandle, |
IN EFI_GUID * | Protocol, | ||
OUT VOID ** | Interface | ||
) |
Queries a handle to determine if it supports a specified protocol.
UserHandle | The handle being queried. |
Protocol | The published unique identifier of the protocol. |
Interface | Supplies the address where a pointer to the corresponding Protocol Interface is returned. |
Queries a handle to determine if it supports a specified protocol.
UserHandle | The handle being queried. |
Protocol | The published unique identifier of the protocol. |
Interface | Supplies the address where a pointer to the corresponding Protocol Interface is returned. |
EFI_SUCCESS | The interface information for the specified protocol was returned. |
EFI_UNSUPPORTED | The device does not support the specified protocol. |
EFI_INVALID_PARAMETER | Handle is NULL.. |
EFI_INVALID_PARAMETER | Protocol is NULL. |
EFI_INVALID_PARAMETER | Interface is NULL. |
VOID CoreInitializeDebugImageInfoTable | ( | VOID | ) |
Creates and initializes the DebugImageInfo Table. Also creates the configuration table and registers it into the system table.
Note: This function allocates memory, frees it, and then allocates memory at an address within the initial allocation. Since this function is called early in DXE core initialization (before drivers are dispatched), this should not be a problem.
Creates and initializes the DebugImageInfo Table. Also creates the configuration table and registers it into the system table.
Definition at line 30 of file DebugImageInfo.c.
VOID CoreInitializeDispatcher | ( | VOID | ) |
Initialize the dispatcher. Initialize the notification function that runs when an FV2 protocol is added to the system.
Definition at line 1444 of file Dispatcher.c.
EFI_STATUS CoreInitializeEventServices | ( | VOID | ) |
EFI_STATUS CoreInitializeGcdServices | ( | IN OUT VOID ** | HobStart, |
IN EFI_PHYSICAL_ADDRESS | MemoryBaseAddress, | ||
IN UINT64 | MemoryLength | ||
) |
External function. Initializes the GCD and memory services based on the memory descriptor HOBs. This function is responsible for priming the GCD map and the memory map, so memory allocations and resource allocations can be made. The HobStart will be relocated to a pool buffer.
HobStart | The start address of the HOB |
MemoryBaseAddress | Start address of memory region found to init DXE core. |
MemoryLength | Length of memory region found to init DXE core. |
EFI_SUCCESS | GCD services successfully initialized. |
EFI_STATUS CoreInitializeHandleServices | ( | VOID | ) |
EFI_STATUS CoreInitializeImageServices | ( | IN VOID * | HobStart | ) |
VOID EFIAPI CoreInitializeMemoryAttributesTable | ( | VOID | ) |
Initialize MemoryAttrubutesTable support.
Definition at line 303 of file MemoryAttributesTable.c.
VOID EFIAPI CoreInitializeMemoryProtection | ( | VOID | ) |
Initialize Memory Protection support.
Definition at line 931 of file MemoryProtection.c.
EFI_STATUS CoreInitializeMemoryServices | ( | IN VOID ** | HobStart, |
OUT EFI_PHYSICAL_ADDRESS * | MemoryBaseAddress, | ||
OUT UINT64 * | MemoryLength | ||
) |
External function. Initializes memory services based on the memory descriptor HOBs. This function is responsible for priming the memory map, so memory allocations and resource allocations can be made. The first part of this function can not depend on any memory services until at least one memory descriptor is provided to the memory services.
HobStart | The start address of the HOB. |
MemoryBaseAddress | Start address of memory region found to init DXE core. |
MemoryLength | Length of memory region found to init DXE core. |
EFI_SUCCESS | Memory services successfully initialized. |
VOID CoreInitializePool | ( | VOID | ) |
EFI_STATUS EFIAPI CoreInstallConfigurationTable | ( | IN EFI_GUID * | Guid, |
IN VOID * | Table | ||
) |
Boot Service called to add, modify, or remove a system configuration table from the EFI System Table.
Guid | Pointer to the GUID for the entry to add, update, or remove |
Table | Pointer to the configuration table for the entry to add, update, or remove, may be NULL. |
Boot Service called to add, modify, or remove a system configuration table from the EFI System Table.
Guid | Pointer to the GUID for the entry to add, update, or remove |
Table | Pointer to the configuration table for the entry to add, update, or remove, may be NULL. |
Definition at line 32 of file InstallConfigurationTable.c.
EFI_STATUS EFIAPI CoreInstallMultipleProtocolInterfaces | ( | IN OUT EFI_HANDLE * | Handle, |
... | |||
) |
Installs a list of protocol interface into the boot services environment. This function calls InstallProtocolInterface() in a loop. If any error occures all the protocols added by this function are removed. This is basically a lib function to save space.
Handle | The handle to install the protocol handlers on, or NULL if a new handle is to be allocated |
... | EFI_GUID followed by protocol instance. A NULL terminates the list. The pairs are the arguments to InstallProtocolInterface(). All the protocols are added to Handle. |
EFI_SUCCESS | All the protocol interface was installed. |
EFI_OUT_OF_RESOURCES | There was not enough memory in pool to install all the protocols. |
EFI_ALREADY_STARTED | A Device Path Protocol instance was passed in that is already present in the handle database. |
EFI_INVALID_PARAMETER | Handle is NULL. |
EFI_INVALID_PARAMETER | Protocol is already installed on the handle specified by Handle. |
Installs a list of protocol interface into the boot services environment. This function calls InstallProtocolInterface() in a loop. If any error occures all the protocols added by this function are removed. This is basically a lib function to save space.
Handle | The pointer to a handle to install the new protocol interfaces on, or a pointer to NULL if a new handle is to be allocated. |
... | EFI_GUID followed by protocol instance. A NULL terminates the list. The pairs are the arguments to InstallProtocolInterface(). All the protocols are added to Handle. |
EFI_SUCCESS | All the protocol interface was installed. |
EFI_OUT_OF_RESOURCES | There was not enough memory in pool to install all the protocols. |
EFI_ALREADY_STARTED | A Device Path Protocol instance was passed in that is already present in the handle database. |
EFI_INVALID_PARAMETER | Handle is NULL. |
EFI_INVALID_PARAMETER | Protocol is already installed on the handle specified by Handle. |
EFI_STATUS EFIAPI CoreInstallProtocolInterface | ( | IN OUT EFI_HANDLE * | UserHandle, |
IN EFI_GUID * | Protocol, | ||
IN EFI_INTERFACE_TYPE | InterfaceType, | ||
IN VOID * | Interface | ||
) |
Wrapper function to CoreInstallProtocolInterfaceNotify. This is the public API which Calls the private one which contains a BOOLEAN parameter for notifications
UserHandle | The handle to install the protocol handler on, or NULL if a new handle is to be allocated |
Protocol | The protocol to add to the handle |
InterfaceType | Indicates whether Interface is supplied in native form. |
Interface | The interface for the protocol being added |
EFI_STATUS CoreInstallProtocolInterfaceNotify | ( | IN OUT EFI_HANDLE * | UserHandle, |
IN EFI_GUID * | Protocol, | ||
IN EFI_INTERFACE_TYPE | InterfaceType, | ||
IN VOID * | Interface, | ||
IN BOOLEAN | Notify | ||
) |
Installs a protocol interface into the boot services environment.
UserHandle | The handle to install the protocol handler on, or NULL if a new handle is to be allocated |
Protocol | The protocol to add to the handle |
InterfaceType | Indicates whether Interface is supplied in native form. |
Interface | The interface for the protocol being added |
Notify | indicates whether notify the notification list for this protocol |
EFI_INVALID_PARAMETER | Invalid parameter |
EFI_OUT_OF_RESOURCES | No enough buffer to allocate |
EFI_SUCCESS | Protocol interface successfully installed |
EFI_STATUS EFIAPI CoreInternalAllocatePool | ( | IN EFI_MEMORY_TYPE | PoolType, |
IN UINTN | Size, | ||
OUT VOID ** | Buffer | ||
) |
Allocate pool of a particular type.
PoolType | Type of pool to allocate |
Size | The amount of pool to allocate |
Buffer | The address to return a pointer to the allocated pool |
EFI_INVALID_PARAMETER | PoolType not valid or Buffer is NULL |
EFI_OUT_OF_RESOURCES | Size exceeds max pool size or allocation failed. |
EFI_SUCCESS | Pool successfully allocated. |
Allocate pool of a particular type.
PoolType | Type of pool to allocate |
Size | The amount of pool to allocate |
Buffer | The address to return a pointer to the allocated pool |
EFI_INVALID_PARAMETER | Buffer is NULL. PoolType is in the range EfiMaxMemoryType..0x6FFFFFFF. PoolType is EfiPersistentMemory. |
EFI_OUT_OF_RESOURCES | Size exceeds max pool size or allocation failed. |
EFI_SUCCESS | Pool successfully allocated. |
EFI_STATUS EFIAPI CoreInternalFreePool | ( | IN VOID * | Buffer, |
OUT EFI_MEMORY_TYPE *PoolType | OPTIONAL | ||
) |
BOOLEAN CoreIsSchedulable | ( | IN EFI_CORE_DRIVER_ENTRY * | DriverEntry | ) |
This is the POSTFIX version of the dependency evaluator. This code does not need to handle Before or After, as it is not valid to call this routine in this case. The SOR is just ignored and is a nop in the grammer. POSTFIX means all the math is done on top of the stack.
DriverEntry | DriverEntry element to update. |
TRUE | If driver is ready to run. |
FALSE | If driver is not ready to run or some fatal error was found. |
Definition at line 197 of file Dependency.c.
EFI_STATUS EFIAPI CoreLoadImage | ( | IN BOOLEAN | BootPolicy, |
IN EFI_HANDLE | ParentImageHandle, | ||
IN EFI_DEVICE_PATH_PROTOCOL * | FilePath, | ||
IN VOID *SourceBuffer | OPTIONAL, | ||
IN UINTN | SourceSize, | ||
OUT EFI_HANDLE * | ImageHandle | ||
) |
Loads an EFI image into memory and returns a handle to the image.
BootPolicy | If TRUE, indicates that the request originates from the boot manager, and that the boot manager is attempting to load FilePath as a boot selection. |
ParentImageHandle | The caller's image handle. |
FilePath | The specific file path from which the image is loaded. |
SourceBuffer | If not NULL, a pointer to the memory location containing a copy of the image to be loaded. |
SourceSize | The size in bytes of SourceBuffer. |
ImageHandle | Pointer to the returned image handle that is created when the image is successfully loaded. |
EFI_SUCCESS | The image was loaded into memory. |
EFI_NOT_FOUND | The FilePath was not found. |
EFI_INVALID_PARAMETER | One of the parameters has an invalid value. |
EFI_UNSUPPORTED | The image type is not supported, or the device path cannot be parsed to locate the proper protocol for loading the file. |
EFI_OUT_OF_RESOURCES | Image was not loaded due to insufficient resources. |
EFI_LOAD_ERROR | Image was not loaded because the image format was corrupt or not understood. |
EFI_DEVICE_ERROR | Image was not loaded because the device returned a read error. |
EFI_ACCESS_DENIED | Image was not loaded because the platform policy prohibits the image from being loaded. NULL is returned in *ImageHandle. |
EFI_SECURITY_VIOLATION | Image was loaded and an ImageHandle was created with a valid EFI_LOADED_IMAGE_PROTOCOL. However, the current platform policy specifies that the image should not be started. |
EFI_STATUS EFIAPI CoreLocateDevicePath | ( | IN EFI_GUID * | Protocol, |
IN OUT EFI_DEVICE_PATH_PROTOCOL ** | DevicePath, | ||
OUT EFI_HANDLE * | Device | ||
) |
Locates the handle to a device on the device path that best matches the specified protocol.
Protocol | The protocol to search for. |
DevicePath | On input, a pointer to a pointer to the device path. On output, the device path pointer is modified to point to the remaining part of the devicepath. |
Device | A pointer to the returned device handle. |
EFI_SUCCESS | The resulting handle was returned. |
EFI_NOT_FOUND | No handles matched the search. |
EFI_INVALID_PARAMETER | One of the parameters has an invalid value. |
Locates the handle to a device on the device path that supports the specified protocol.
Protocol | Specifies the protocol to search for. |
DevicePath | On input, a pointer to a pointer to the device path. On output, the device path pointer is modified to point to the remaining part of the device path. |
Device | A pointer to the returned device handle. |
EFI_SUCCESS | The resulting handle was returned. |
EFI_NOT_FOUND | No handles match the search. |
EFI_INVALID_PARAMETER | Protocol is NULL. |
EFI_INVALID_PARAMETER | DevicePath is NULL. |
EFI_INVALID_PARAMETER | A handle matched the search and Device is NULL. |
EFI_STATUS EFIAPI CoreLocateHandle | ( | IN EFI_LOCATE_SEARCH_TYPE | SearchType, |
IN EFI_GUID *Protocol | OPTIONAL, | ||
IN VOID *SearchKey | OPTIONAL, | ||
IN OUT UINTN * | BufferSize, | ||
OUT EFI_HANDLE * | Buffer | ||
) |
Locates the requested handle(s) and returns them in Buffer.
SearchType | The type of search to perform to locate the handles |
Protocol | The protocol to search for |
SearchKey | Dependant on SearchType |
BufferSize | On input the size of Buffer. On output the size of data returned. |
Buffer | The buffer to return the results in |
EFI_BUFFER_TOO_SMALL | Buffer too small, required buffer size is returned in BufferSize. |
EFI_INVALID_PARAMETER | Invalid parameter |
EFI_SUCCESS | Successfully found the requested handle(s) and returns them in Buffer. |
EFI_STATUS EFIAPI CoreLocateHandleBuffer | ( | IN EFI_LOCATE_SEARCH_TYPE | SearchType, |
IN EFI_GUID *Protocol | OPTIONAL, | ||
IN VOID *SearchKey | OPTIONAL, | ||
IN OUT UINTN * | NumberHandles, | ||
OUT EFI_HANDLE ** | Buffer | ||
) |
Function returns an array of handles that support the requested protocol in a buffer allocated from pool. This is a version of CoreLocateHandle() that allocates a buffer for the caller.
SearchType | Specifies which handle(s) are to be returned. |
Protocol | Provides the protocol to search by. This parameter is only valid for SearchType ByProtocol. |
SearchKey | Supplies the search key depending on the SearchType. |
NumberHandles | The number of handles returned in Buffer. |
Buffer | A pointer to the buffer to return the requested array of handles that support Protocol. |
EFI_SUCCESS | The result array of handles was returned. |
EFI_NOT_FOUND | No handles match the search. |
EFI_OUT_OF_RESOURCES | There is not enough pool memory to store the matching results. |
EFI_INVALID_PARAMETER | One or more parameters are not valid. |
EFI_STATUS EFIAPI CoreLocateProtocol | ( | IN EFI_GUID * | Protocol, |
IN VOID *Registration | OPTIONAL, | ||
OUT VOID ** | Interface | ||
) |
Return the first Protocol Interface that matches the Protocol GUID. If Registration is passed in, return a Protocol Instance that was just add to the system. If Registration is NULL return the first Protocol Interface you find.
Protocol | The protocol to search for |
Registration | Optional Registration Key returned from RegisterProtocolNotify() |
Interface | Return the Protocol interface (instance). |
EFI_SUCCESS | If a valid Interface is returned |
EFI_INVALID_PARAMETER | Invalid parameter |
EFI_NOT_FOUND | Protocol interface not found |
VOID CoreNewDebugImageInfoEntry | ( | IN UINT32 | ImageInfoType, |
IN EFI_LOADED_IMAGE_PROTOCOL * | LoadedImage, | ||
IN EFI_HANDLE | ImageHandle | ||
) |
Adds a new DebugImageInfo structure to the DebugImageInfo Table. Re-Allocates the table if it's not large enough to accomidate another entry.
ImageInfoType | type of debug image information |
LoadedImage | pointer to the loaded image protocol for the image being loaded |
ImageHandle | image handle for the image being loaded |
Definition at line 162 of file DebugImageInfo.c.
VOID CoreNotifyOnProtocolInstallation | ( | VOID | ) |
Creates an event that is fired everytime a Protocol of a specific type is installed.
Creates an events for the Architectural Protocols and the optional protocols that are fired everytime a Protocol of a specific type is installed.
Definition at line 248 of file DxeProtocolNotify.c.
EFI_STATUS EFIAPI CoreOpenProtocol | ( | IN EFI_HANDLE | UserHandle, |
IN EFI_GUID * | Protocol, | ||
OUT VOID **Interface | OPTIONAL, | ||
IN EFI_HANDLE | ImageHandle, | ||
IN EFI_HANDLE | ControllerHandle, | ||
IN UINT32 | Attributes | ||
) |
Locates the installed protocol handler for the handle, and invokes it to obtain the protocol interface. Usage information is registered in the protocol data base.
UserHandle | The handle to obtain the protocol interface on |
Protocol | The ID of the protocol |
Interface | The location to return the protocol interface |
ImageHandle | The handle of the Image that is opening the protocol interface specified by Protocol and Interface. |
ControllerHandle | The controller handle that is requiring this interface. |
Attributes | The open mode of the protocol interface specified by Handle and Protocol. |
EFI_INVALID_PARAMETER | Protocol is NULL. |
EFI_SUCCESS | Get the protocol interface. |
EFI_STATUS EFIAPI CoreOpenProtocolInformation | ( | IN EFI_HANDLE | UserHandle, |
IN EFI_GUID * | Protocol, | ||
OUT EFI_OPEN_PROTOCOL_INFORMATION_ENTRY ** | EntryBuffer, | ||
OUT UINTN * | EntryCount | ||
) |
Return information about Opened protocols in the system
UserHandle | The handle to close the protocol interface on |
Protocol | The ID of the protocol |
EntryBuffer | A pointer to a buffer of open protocol information in the form of EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures. |
EntryCount | Number of EntryBuffer entries |
Return information about Opened protocols in the system
UserHandle | The handle to close the protocol interface on |
Protocol | The ID of the protocol |
EntryBuffer | A pointer to a buffer of open protocol information in the form of EFI_OPEN_PROTOCOL_INFORMATION_ENTRY structures. |
EntryCount | Number of EntryBuffer entries |
EFI_SUCCESS | The open protocol information was returned in EntryBuffer, and the number of entries was returned EntryCount. |
EFI_NOT_FOUND | Handle does not support the protocol specified by Protocol. |
EFI_OUT_OF_RESOURCES | There are not enough resources available to allocate EntryBuffer. |
EFI_STATUS CorePreProcessDepex | ( | IN EFI_CORE_DRIVER_ENTRY * | DriverEntry | ) |
Preprocess dependency expression and update DriverEntry to reflect the state of Before, After, and SOR dependencies. If DriverEntry->Before or DriverEntry->After is set it will never be cleared. If SOR is set it will be cleared by CoreSchedule(), and then the driver can be dispatched.
DriverEntry | DriverEntry element to update . |
EFI_SUCCESS | It always works. |
Definition at line 157 of file Dependency.c.
EFI_STATUS EFIAPI CoreProcessFirmwareVolume | ( | IN VOID * | FvHeader, |
IN UINTN | Size, | ||
OUT EFI_HANDLE * | FVProtocolHandle | ||
) |
This DXE service routine is used to process a firmware volume. In particular, it can be called by BDS to process a single firmware volume found in a capsule.
FvHeader | pointer to a firmware volume header |
Size | the size of the buffer pointed to by FvHeader |
FVProtocolHandle | the handle on which a firmware volume protocol was produced for the firmware volume passed in. |
EFI_OUT_OF_RESOURCES | if an FVB could not be produced due to lack of system resources |
EFI_VOLUME_CORRUPTED | if the volume was corrupted |
EFI_SUCCESS | a firmware volume protocol was produced for the firmware volume |
This DXE service routine is used to process a firmware volume. In particular, it can be called by BDS to process a single firmware volume found in a capsule.
Caution: The caller need validate the input firmware volume to follow PI specification. DxeCore will trust the input data and process firmware volume directly.
FvHeader | pointer to a firmware volume header |
Size | the size of the buffer pointed to by FvHeader |
FVProtocolHandle | the handle on which a firmware volume protocol was produced for the firmware volume passed in. |
EFI_OUT_OF_RESOURCES | if an FVB could not be produced due to lack of system resources |
EFI_VOLUME_CORRUPTED | if the volume was corrupted |
EFI_SUCCESS | a firmware volume protocol was produced for the firmware volume |
Definition at line 676 of file FwVolBlock.c.
EFI_STATUS EFIAPI CoreProtocolsPerHandle | ( | IN EFI_HANDLE | UserHandle, |
OUT EFI_GUID *** | ProtocolBuffer, | ||
OUT UINTN * | ProtocolBufferCount | ||
) |
Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated from pool.
UserHandle | The handle from which to retrieve the list of protocol interface GUIDs. |
ProtocolBuffer | A pointer to the list of protocol interface GUID pointers that are installed on Handle. |
ProtocolBufferCount | A pointer to the number of GUID pointers present in ProtocolBuffer. |
EFI_SUCCESS | The list of protocol interface GUIDs installed on Handle was returned in ProtocolBuffer. The number of protocol interface GUIDs was returned in ProtocolBufferCount. |
EFI_INVALID_PARAMETER | Handle is NULL. |
EFI_INVALID_PARAMETER | Handle is not a valid EFI_HANDLE. |
EFI_INVALID_PARAMETER | ProtocolBuffer is NULL. |
EFI_INVALID_PARAMETER | ProtocolBufferCount is NULL. |
EFI_OUT_OF_RESOURCES | There is not enough pool memory to store the results. |
EFI_STATUS EFIAPI CoreRegisterProtocolNotify | ( | IN EFI_GUID * | Protocol, |
IN EFI_EVENT | Event, | ||
OUT VOID ** | Registration | ||
) |
Add a new protocol notification record for the request protocol.
Protocol | The requested protocol to add the notify registration |
Event | The event to signal |
Registration | Returns the registration record |
EFI_INVALID_PARAMETER | Invalid parameter |
EFI_SUCCESS | Successfully returned the registration record that has been added |
EFI_STATUS EFIAPI CoreReinstallProtocolInterface | ( | IN EFI_HANDLE | UserHandle, |
IN EFI_GUID * | Protocol, | ||
IN VOID * | OldInterface, | ||
IN VOID * | NewInterface | ||
) |
Reinstall a protocol interface on a device handle. The OldInterface for Protocol is replaced by the NewInterface.
UserHandle | Handle on which the interface is to be reinstalled |
Protocol | The numeric ID of the interface |
OldInterface | A pointer to the old interface |
NewInterface | A pointer to the new interface |
EFI_SUCCESS | The protocol interface was installed |
EFI_NOT_FOUND | The OldInterface on the handle was not found |
EFI_INVALID_PARAMETER | One of the parameters has an invalid value |
VOID CoreReleaseGcdMemoryLock | ( | VOID | ) |
VOID CoreRemoveDebugImageInfoEntry | ( | EFI_HANDLE | ImageHandle | ) |
Removes and frees an entry from the DebugImageInfo Table.
ImageHandle | image handle for the image being unloaded |
Definition at line 253 of file DebugImageInfo.c.
EFI_STATUS EFIAPI CoreRemoveIoSpace | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length | ||
) |
EFI_STATUS EFIAPI CoreRemoveMemorySpace | ( | 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.
BaseAddress | Base address of the memory space. |
Length | Length of the memory space. |
EFI_SUCCESS | Successfully remove a segment of memory space. |
EFI_STATUS EFIAPI CoreSchedule | ( | IN EFI_HANDLE | FirmwareVolumeHandle, |
IN EFI_GUID * | DriverName | ||
) |
Check every driver and locate a matching one. If the driver is found, the Unrequested state flag is cleared.
FirmwareVolumeHandle | The handle of the Firmware Volume that contains the firmware file specified by DriverName. |
DriverName | The Driver name to put in the Dependent state. |
EFI_SUCCESS | The DriverName was found and it's SOR bit was cleared |
EFI_NOT_FOUND | The DriverName does not exist or it's SOR bit was not set. |
Definition at line 301 of file Dispatcher.c.
EFI_STATUS EFIAPI CoreSetMemorySpaceAttributes | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length, | ||
IN UINT64 | Attributes | ||
) |
Modifies the attributes for a memory region in the global coherency domain of the processor.
BaseAddress | Specified start address |
Length | Specified length |
Attributes | Specified attributes |
EFI_SUCCESS | The attributes were set for the memory region. |
EFI_INVALID_PARAMETER | Length is zero. |
EFI_UNSUPPORTED | The processor does not support one or more bytes of the memory resource range specified by BaseAddress and Length. |
EFI_UNSUPPORTED | The bit mask of attributes is not support for the memory resource range specified by BaseAddress and Length. |
EFI_ACCESS_DENIED | The attributes for the memory resource range specified by BaseAddress and Length cannot be modified. |
EFI_OUT_OF_RESOURCES | There are not enough system resources to modify the attributes of the memory resource range. |
EFI_NOT_AVAILABLE_YET | The attributes cannot be set because CPU architectural protocol is not available yet. |
Modifies the attributes for a memory region in the global coherency domain of the processor.
BaseAddress | Specified start address |
Length | Specified length |
Attributes | Specified attributes |
EFI_SUCCESS | The attributes were set for the memory region. |
EFI_INVALID_PARAMETER | Length is zero. |
EFI_UNSUPPORTED | The processor does not support one or more bytes of the memory resource range specified by BaseAddress and Length. |
EFI_UNSUPPORTED | The bit mask of attributes is not support for the memory resource range specified by BaseAddress and Length. |
EFI_ACCESS_DEFINED | The attributes for the memory resource range specified by BaseAddress and Length cannot be modified. |
EFI_OUT_OF_RESOURCES | There are not enough system resources to modify the attributes of the memory resource range. |
EFI_NOT_AVAILABLE_YET | The attributes cannot be set because CPU architectural protocol is not available yet. |
EFI_STATUS EFIAPI CoreSetMemorySpaceCapabilities | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length, | ||
IN UINT64 | Capabilities | ||
) |
Modifies the capabilities for a memory region in the global coherency domain of the processor.
BaseAddress | The physical address that is the start address of a memory region. |
Length | The size in bytes of the memory region. |
Capabilities | The bit mask of capabilities that the memory region supports. |
EFI_SUCCESS | The capabilities were set for the memory region. |
EFI_INVALID_PARAMETER | Length is zero. |
EFI_UNSUPPORTED | The capabilities specified by Capabilities do not include the memory region attributes currently in use. |
EFI_ACCESS_DENIED | The capabilities for the memory resource range specified by BaseAddress and Length cannot be modified. |
EFI_OUT_OF_RESOURCES | There are not enough system resources to modify the capabilities of the memory resource range. |
VOID CoreSetMemoryTypeInformationRange | ( | IN EFI_PHYSICAL_ADDRESS | Start, |
IN UINT64 | Length | ||
) |
Sets the preferred memory range to use for the Memory Type Information bins. This service must be called before fist call to CoreAddMemoryDescriptor().
If the location of the Memory Type Information bins has already been established or the size of the range provides is smaller than all the Memory Type Information bins, then the range provides is not used.
Start | The start address of the Memory Type Information range. |
Length | The size, in bytes, of the Memory Type Information range. |
EFI_STATUS EFIAPI CoreSetTimer | ( | IN EFI_EVENT | UserEvent, |
IN EFI_TIMER_DELAY | Type, | ||
IN UINT64 | TriggerTime | ||
) |
Sets the type of timer and the trigger time for a timer event.
UserEvent | The timer event that is to be signaled at the specified time |
Type | The type of time that is specified in TriggerTime |
TriggerTime | The number of 100ns units until the timer expires |
EFI_SUCCESS | The event has been set to be signaled at the requested time |
EFI_INVALID_PARAMETER | Event or Type is not valid |
EFI_STATUS EFIAPI CoreSetWatchdogTimer | ( | IN UINTN | Timeout, |
IN UINT64 | WatchdogCode, | ||
IN UINTN | DataSize, | ||
IN CHAR16 *WatchdogData | OPTIONAL | ||
) |
Sets the system's watchdog timer.
Timeout | The number of seconds to set the watchdog timer to. A value of zero disables the timer. |
WatchdogCode | The numeric code to log on a watchdog timer timeout event. The firmware reserves codes 0x0000 to 0xFFFF. Loaders and operating systems may use other timeout codes. |
DataSize | The size, in bytes, of WatchdogData. |
WatchdogData | A data buffer that includes a Null-terminated Unicode string, optionally followed by additional binary data. The string is a description that the call may use to further indicate the reason to be logged with a watchdog event. |
Definition at line 37 of file SetWatchdogTimer.c.
EFI_STATUS EFIAPI CoreSignalEvent | ( | IN EFI_EVENT | UserEvent | ) |
EFI_STATUS EFIAPI CoreStall | ( | IN UINTN | Microseconds | ) |
EFI_STATUS EFIAPI CoreStartImage | ( | IN EFI_HANDLE | ImageHandle, |
OUT UINTN * | ExitDataSize, | ||
OUT CHAR16 **ExitData | OPTIONAL | ||
) |
Transfer control to a loaded image's entry point.
ImageHandle | Handle of image to be started. |
ExitDataSize | Pointer of the size to ExitData |
ExitData | Pointer to a pointer to a data buffer that includes a Null-terminated string, optionally followed by additional binary data. The string is a description that the caller may use to further indicate the reason for the image's exit. |
EFI_INVALID_PARAMETER | Invalid parameter |
EFI_OUT_OF_RESOURCES | No enough buffer to allocate |
EFI_SECURITY_VIOLATION | The current platform policy specifies that the image should not be started. |
EFI_SUCCESS | Successfully transfer control to the image's entry point. |
EFI_STATUS CoreTerminateMemoryMap | ( | IN UINTN | MapKey | ) |
Make sure the memory map is following all the construction rules, it is the last time to check memory map error before exit boot services.
MapKey | Memory map key |
EFI_INVALID_PARAMETER | Memory map not consistent with construction rules. |
EFI_SUCCESS | Valid memory map. |
VOID EFIAPI CoreTimerTick | ( | IN UINT64 | Duration | ) |
EFI_STATUS EFIAPI CoreTrust | ( | IN EFI_HANDLE | FirmwareVolumeHandle, |
IN EFI_GUID * | DriverName | ||
) |
Convert a driver from the Untrused back to the Scheduled state.
FirmwareVolumeHandle | The handle of the Firmware Volume that contains the firmware file specified by DriverName. |
DriverName | The Driver name to put in the Scheduled state |
EFI_SUCCESS | The file was found in the untrusted state, and it was promoted to the trusted state. |
EFI_NOT_FOUND | The file was not found in the untrusted state. |
Definition at line 351 of file Dispatcher.c.
EFI_STATUS EFIAPI CoreUninstallMultipleProtocolInterfaces | ( | IN EFI_HANDLE | Handle, |
... | |||
) |
Uninstalls a list of protocol interface in the boot services environment. This function calls UnisatllProtocolInterface() in a loop. This is basically a lib function to save space.
Handle | The handle to uninstall the protocol |
... | EFI_GUID followed by protocol instance. A NULL terminates the list. The pairs are the arguments to UninstallProtocolInterface(). All the protocols are added to Handle. |
Uninstalls a list of protocol interface in the boot services environment. This function calls UninstallProtocolInterface() in a loop. This is basically a lib function to save space.
If any errors are generated while the protocol interfaces are being uninstalled, then the protocol interfaces uninstalled prior to the error will be reinstalled and EFI_INVALID_PARAMETER will be returned.
Handle | The handle to uninstall the protocol interfaces from. |
... | EFI_GUID followed by protocol instance. A NULL terminates the list. The pairs are the arguments to UninstallProtocolInterface(). All the protocols are added to Handle. |
EFI_SUCCESS | if all protocol interfaces where uninstalled. |
EFI_INVALID_PARAMETER | if any protocol interface could not be uninstalled and an attempt was made to reinstall previously uninstalled protocol interfaces. |
EFI_STATUS EFIAPI CoreUninstallProtocolInterface | ( | IN EFI_HANDLE | UserHandle, |
IN EFI_GUID * | Protocol, | ||
IN VOID * | Interface | ||
) |
Uninstalls all instances of a protocol:interfacer from a handle. If the last protocol interface is remove from the handle, the handle is freed.
UserHandle | The handle to remove the protocol handler from |
Protocol | The protocol, of protocol:interface, to remove |
Interface | The interface, of protocol:interface, to remove |
EFI_INVALID_PARAMETER | Protocol is NULL. |
EFI_SUCCESS | Protocol interface successfully uninstalled. |
EFI_STATUS EFIAPI CoreUnloadImage | ( | IN EFI_HANDLE | ImageHandle | ) |
Unloads an image.
ImageHandle | Handle that identifies the image to be unloaded. |
EFI_SUCCESS | The image has been unloaded. |
EFI_UNSUPPORTED | The image has been started, and does not support unload. |
EFI_INVALID_PARAMPETER | ImageHandle is not a valid image handle. |
EFI_STATUS CoreUnregisterProtocolNotify | ( | IN EFI_EVENT | Event | ) |
VOID CoreUpdateDebugTableCrc32 | ( | VOID | ) |
Update the CRC32 in the Debug Table. Since the CRC32 service is made available by the Runtime driver, we have to wait for the Runtime Driver to be installed before the CRC32 can be computed. This function is called elsewhere by the core when the runtime architectural protocol is produced.
Definition at line 142 of file DebugImageInfo.c.
VOID CoreUpdateMemoryAttributes | ( | IN EFI_PHYSICAL_ADDRESS | Start, |
IN UINT64 | NumberOfPages, | ||
IN UINT64 | NewAttributes | ||
) |
EFI_STATUS EFIAPI CoreUpdateProfile | ( | IN PHYSICAL_ADDRESS | CallerAddress, |
IN MEMORY_PROFILE_ACTION | Action, | ||
IN EFI_MEMORY_TYPE | MemoryType, | ||
IN UINTN | Size, | ||
IN VOID * | Buffer, | ||
IN CHAR8 *ActionString | OPTIONAL | ||
) |
Update memory profile information.
CallerAddress | Address of caller who call Allocate or Free. |
Action | This Allocate or Free action. |
MemoryType | Memory type. EfiMaxMemoryType means the MemoryType is unknown. |
Size | Buffer size. |
Buffer | Buffer address. |
ActionString | String for memory profile action. Only needed for user defined allocate action. |
Definition at line 1357 of file MemoryProfileRecord.c.
EFI_STATUS EFIAPI CoreWaitForEvent | ( | IN UINTN | NumberOfEvents, |
IN EFI_EVENT * | UserEvents, | ||
OUT UINTN * | UserIndex | ||
) |
Stops execution until an event is signaled.
NumberOfEvents | The number of events in the UserEvents array |
UserEvents | An array of EFI_EVENT |
UserIndex | Pointer to the index of the event which satisfied the wait condition |
EFI_SUCCESS | The event indicated by Index was signaled. |
EFI_INVALID_PARAMETER | The event indicated by Index has a notification function or Event was not a valid type |
EFI_UNSUPPORTED | The current TPL is not TPL_APPLICATION |
EFI_STATUS EFIAPI DxeMainUefiDecompress | ( | IN EFI_DECOMPRESS_PROTOCOL * | This, |
IN VOID * | Source, | ||
IN UINT32 | SourceSize, | ||
IN OUT VOID * | Destination, | ||
IN UINT32 | DestinationSize, | ||
IN OUT VOID * | Scratch, | ||
IN UINT32 | ScratchSize | ||
) |
Decompresses a compressed source buffer.
The Decompress() function extracts decompressed data to its original form. This protocol is designed so that the decompression algorithm can be implemented without using any memory services. As a result, the Decompress() Function is not allowed to call AllocatePool() or AllocatePages() in its implementation. It is the caller's responsibility to allocate and free the Destination and Scratch buffers. If the compressed source data specified by Source and SourceSize is sucessfully decompressed into Destination, then EFI_SUCCESS is returned. If the compressed source data specified by Source and SourceSize is not in a valid compressed data format, then EFI_INVALID_PARAMETER is returned.
This | A pointer to the EFI_DECOMPRESS_PROTOCOL instance. |
Source | The source buffer containing the compressed data. |
SourceSize | SourceSizeThe size of source data. |
Destination | On output, the destination buffer that contains the uncompressed data. |
DestinationSize | The size of the destination buffer. The size of the destination buffer needed is obtained from EFI_DECOMPRESS_PROTOCOL.GetInfo(). |
Scratch | A temporary scratch buffer that is used to perform the decompression. |
ScratchSize | The size of scratch buffer. The size of the scratch buffer needed is obtained from GetInfo(). |
EFI_SUCCESS | Decompression completed successfully, and the uncompressed buffer is returned in Destination. |
EFI_INVALID_PARAMETER | The source buffer specified by Source and SourceSize is corrupted (not in a valid compressed format). |
Decompresses a compressed source buffer.
The Decompress() function extracts decompressed data to its original form. This protocol is designed so that the decompression algorithm can be implemented without using any memory services. As a result, the Decompress() Function is not allowed to call AllocatePool() or AllocatePages() in its implementation. It is the caller's responsibility to allocate and free the Destination and Scratch buffers. If the compressed source data specified by Source and SourceSize is successfully decompressed into Destination, then EFI_SUCCESS is returned. If the compressed source data specified by Source and SourceSize is not in a valid compressed data format, then EFI_INVALID_PARAMETER is returned.
This | A pointer to the EFI_DECOMPRESS_PROTOCOL instance. |
Source | The source buffer containing the compressed data. |
SourceSize | SourceSizeThe size of source data. |
Destination | On output, the destination buffer that contains the uncompressed data. |
DestinationSize | The size of the destination buffer. The size of the destination buffer needed is obtained from EFI_DECOMPRESS_PROTOCOL.GetInfo(). |
Scratch | A temporary scratch buffer that is used to perform the decompression. |
ScratchSize | The size of scratch buffer. The size of the scratch buffer needed is obtained from GetInfo(). |
EFI_SUCCESS | Decompression completed successfully, and the uncompressed buffer is returned in Destination. |
EFI_INVALID_PARAMETER | The source buffer specified by Source and SourceSize is corrupted (not in a valid compressed format). |
EFI_STATUS EFIAPI DxeMainUefiDecompressGetInfo | ( | IN EFI_DECOMPRESS_PROTOCOL * | This, |
IN VOID * | Source, | ||
IN UINT32 | SourceSize, | ||
OUT UINT32 * | DestinationSize, | ||
OUT UINT32 * | ScratchSize | ||
) |
Given a compressed source buffer, this function retrieves the size of the uncompressed buffer and the size of the scratch buffer required to decompress the compressed source buffer.
The GetInfo() function retrieves the size of the uncompressed buffer and the temporary scratch buffer required to decompress the buffer specified by Source and SourceSize. If the size of the uncompressed buffer or the size of the scratch buffer cannot be determined from the compressed data specified by Source and SourceData, then EFI_INVALID_PARAMETER is returned. Otherwise, the size of the uncompressed buffer is returned in DestinationSize, the size of the scratch buffer is returned in ScratchSize, and EFI_SUCCESS is returned. The GetInfo() function does not have scratch buffer available to perform a thorough checking of the validity of the source data. It just retrieves the "Original Size" field from the beginning bytes of the source data and output it as DestinationSize. And ScratchSize is specific to the decompression implementation.
This | A pointer to the EFI_DECOMPRESS_PROTOCOL instance. |
Source | The source buffer containing the compressed data. |
SourceSize | The size, in bytes, of the source buffer. |
DestinationSize | A pointer to the size, in bytes, of the uncompressed buffer that will be generated when the compressed buffer specified by Source and SourceSize is decompressed. |
ScratchSize | A pointer to the size, in bytes, of the scratch buffer that is required to decompress the compressed buffer specified by Source and SourceSize. |
EFI_SUCCESS | The size of the uncompressed data was returned in DestinationSize and the size of the scratch buffer was returned in ScratchSize. |
EFI_INVALID_PARAMETER | The size of the uncompressed data or the size of the scratch buffer cannot be determined from the compressed data specified by Source and SourceSize. |
EFI_STATUS EFIAPI FwVolBlockDriverInit | ( | IN EFI_HANDLE | ImageHandle, |
IN EFI_SYSTEM_TABLE * | SystemTable | ||
) |
This routine consumes FV hobs and produces instances of FW_VOL_BLOCK_PROTOCOL as appropriate.
ImageHandle | The image handle. |
SystemTable | The system table. |
EFI_SUCCESS | Successfully initialized firmware volume block driver. |
Definition at line 613 of file FwVolBlock.c.
EFI_STATUS EFIAPI FwVolDriverInit | ( | IN EFI_HANDLE | ImageHandle, |
IN EFI_SYSTEM_TABLE * | SystemTable | ||
) |
This routine is the driver initialization entry point. It initializes the libraries, and registers two notification functions. These notification functions are responsible for building the FV stack dynamically.
ImageHandle | The image handle. |
SystemTable | The system table. |
EFI_SUCCESS | Function successfully returned. |
This routine is the driver initialization entry point. It registers a notification function. This notification function are responsible for building the FV stack dynamically.
ImageHandle | The image handle. |
SystemTable | The system table. |
EFI_SUCCESS | Function successfully returned. |
UINT32 GetFvbAuthenticationStatus | ( | IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * | FvbProtocol | ) |
Get FVB authentication status
FvbProtocol | FVB protocol. |
Definition at line 396 of file FwVolBlock.c.
EFI_STATUS GetFwVolHeader | ( | IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * | Fvb, |
OUT EFI_FIRMWARE_VOLUME_HEADER ** | FwVolHeader | ||
) |
Given the supplied FW_VOL_BLOCK_PROTOCOL, allocate a buffer for output and copy the real length volume header into it.
Fvb | The FW_VOL_BLOCK_PROTOCOL instance from which to read the volume header |
FwVolHeader | Pointer to pointer to allocated buffer in which the volume header is returned. |
EFI_OUT_OF_RESOURCES | No enough buffer could be allocated. |
EFI_SUCCESS | Successfully read volume header to the allocated buffer. |
EFI_INVALID_PARAMETER | The FV Header signature is not as expected or the file system could not be understood. |
EFI_STATUS EFIAPI GetSection | ( | IN UINTN | SectionStreamHandle, |
IN EFI_SECTION_TYPE * | SectionType, | ||
IN EFI_GUID * | SectionDefinitionGuid, | ||
IN UINTN | SectionInstance, | ||
IN VOID ** | Buffer, | ||
IN OUT UINTN * | BufferSize, | ||
OUT UINT32 * | AuthenticationStatus, | ||
IN BOOLEAN | IsFfs3Fv | ||
) |
SEP member function. Retrieves requested section from section stream.
SectionStreamHandle | The section stream from which to extract the requested section. |
SectionType | A pointer to the type of section to search for. |
SectionDefinitionGuid | If the section type is EFI_SECTION_GUID_DEFINED, then SectionDefinitionGuid indicates which of these types of sections to search for. |
SectionInstance | Indicates which instance of the requested section to return. |
Buffer | Double indirection to buffer. If *Buffer is non-null on input, then the buffer is caller allocated. If Buffer is NULL, then the buffer is callee allocated. In either case, the required buffer size is returned in *BufferSize. |
BufferSize | On input, indicates the size of *Buffer if Buffer is non-null on input. On output, indicates the required size (allocated size if callee allocated) of *Buffer. |
AuthenticationStatus | A pointer to a caller-allocated UINT32 that indicates the authentication status of the output buffer. If the input section's GuidedSectionHeader.Attributes field has the EFI_GUIDED_SECTION_AUTH_STATUS_VALID bit as clear, AuthenticationStatus must return zero. Both local bits (19:16) and aggregate bits (3:0) in AuthenticationStatus are returned by ExtractSection(). These bits reflect the status of the extraction operation. The bit pattern in both regions must be the same, as the local and aggregate authentication statuses have equivalent meaning at this level. If the function returns anything other than EFI_SUCCESS, the value of *AuthenticationStatus is undefined. |
IsFfs3Fv | Indicates the FV format. |
EFI_SUCCESS | Section was retrieved successfully |
EFI_PROTOCOL_ERROR | A GUID defined section was encountered in the section stream with its EFI_GUIDED_SECTION_PROCESSING_REQUIRED bit set, but there was no corresponding GUIDed Section Extraction Protocol in the handle database. Buffer is unmodified. |
EFI_NOT_FOUND | An error was encountered when parsing the SectionStream. This indicates the SectionStream is not correctly formatted. |
EFI_NOT_FOUND | The requested section does not exist. |
EFI_OUT_OF_RESOURCES | The system has insufficient resources to process the request. |
EFI_INVALID_PARAMETER | The SectionStreamHandle does not exist. |
EFI_WARN_TOO_SMALL | The size of the caller allocated input buffer is insufficient to contain the requested section. The input buffer is filled and section contents are truncated. |
Definition at line 1242 of file CoreSectionExtraction.c.
EFI_STATUS EFIAPI InitializeSectionExtraction | ( | IN EFI_HANDLE | ImageHandle, |
IN EFI_SYSTEM_TABLE * | SystemTable | ||
) |
Entry point of the section extraction code. Initializes an instance of the section extraction interface and installs it on a new handle.
ImageHandle | A handle for the image that is initializing this driver |
SystemTable | A pointer to the EFI system table |
EFI_SUCCESS | Driver initialized successfully |
EFI_OUT_OF_RESOURCES | Could not allocate needed resources |
Definition at line 212 of file CoreSectionExtraction.c.
VOID InsertImageRecord | ( | IN EFI_RUNTIME_IMAGE_ENTRY * | RuntimeImage | ) |
Insert image record.
RuntimeImage | Runtime image information |
Definition at line 583 of file MemoryAttributesTable.c.
VOID InstallMemoryAttributesTableOnMemoryAllocation | ( | IN EFI_MEMORY_TYPE | MemoryType | ) |
Install MemoryAttributesTable on memory allocation.
[in] | MemoryType | EFI memory type. |
Definition at line 240 of file MemoryAttributesTable.c.
VOID MemoryProfileInit | ( | IN VOID * | HobStart | ) |
Initialize memory profile.
HobStart | The start address of the HOB. |
Definition at line 592 of file MemoryProfileRecord.c.
VOID MemoryProfileInstallProtocol | ( | VOID | ) |
Install memory profile protocol.
Definition at line 628 of file MemoryProfileRecord.c.
VOID MemoryProtectionExitBootServicesCallback | ( | VOID | ) |
ExitBootServices Callback function for memory protection.
Definition at line 850 of file MemoryProtection.c.
VOID MergeMemoryMap | ( | IN OUT EFI_MEMORY_DESCRIPTOR * | MemoryMap, |
IN OUT UINTN * | MemoryMapSize, | ||
IN UINTN | DescriptorSize | ||
) |
Merge continous memory map entries whose have same attributes.
MemoryMap | A pointer to the buffer in which firmware places the current memory map. |
MemoryMapSize | A pointer to the size, in bytes, of the MemoryMap buffer. On input, this is the size of the current memory map. On output, it is the size of new memory map after merge. |
DescriptorSize | Size, in bytes, of an individual EFI_MEMORY_DESCRIPTOR. |
Merge continuous memory map entries whose have same attributes.
[in,out] | MemoryMap | A pointer to the buffer in which firmware places the current memory map. |
[in,out] | MemoryMapSize | A pointer to the size, in bytes, of the MemoryMap buffer. On input, this is the size of the current memory map. On output, it is the size of new memory map after merge. |
[in] | DescriptorSize | Size, in bytes, of an individual EFI_MEMORY_DESCRIPTOR. |
Definition at line 382 of file MemoryAttributesTable.c.
EFI_STATUS EFIAPI OpenSectionStream | ( | IN UINTN | SectionStreamLength, |
IN VOID * | SectionStream, | ||
OUT UINTN * | SectionStreamHandle | ||
) |
SEP member function. This function creates and returns a new section stream handle to represent the new section stream.
SectionStreamLength | Size in bytes of the section stream. |
SectionStream | Buffer containing the new section stream. |
SectionStreamHandle | A pointer to a caller allocated UINTN that on output contains the new section stream handle. |
EFI_SUCCESS | The section stream is created successfully. |
EFI_OUT_OF_RESOURCES | memory allocation failed. |
EFI_INVALID_PARAMETER | Section stream does not end concident with end of last section. |
Definition at line 418 of file CoreSectionExtraction.c.
EFI_STATUS ProduceFVBProtocolOnBuffer | ( | IN EFI_PHYSICAL_ADDRESS | BaseAddress, |
IN UINT64 | Length, | ||
IN EFI_HANDLE | ParentHandle, | ||
IN UINT32 | AuthenticationStatus, | ||
OUT EFI_HANDLE *FvProtocol | OPTIONAL | ||
) |
This routine produces a firmware volume block protocol on a given buffer.
BaseAddress | base address of the firmware volume image |
Length | length of the firmware volume image |
ParentHandle | handle of parent firmware volume, if this image came from an FV image file and section in another firmware volume (ala capsules) |
AuthenticationStatus | Authentication status inherited, if this image came from an FV image file and section in another firmware volume. |
FvProtocol | Firmware volume block protocol produced. |
EFI_VOLUME_CORRUPTED | Volume corrupted. |
EFI_OUT_OF_RESOURCES | No enough buffer to be allocated. |
EFI_SUCCESS | Successfully produced a FVB protocol on given buffer. |
Definition at line 432 of file FwVolBlock.c.
VOID ProtectUefiImage | ( | IN EFI_LOADED_IMAGE_PROTOCOL * | LoadedImage, |
IN EFI_DEVICE_PATH_PROTOCOL * | LoadedImageDevicePath | ||
) |
Protect UEFI image.
[in] | LoadedImage | The loaded image protocol |
[in] | LoadedImageDevicePath | The loaded image device path protocol |
Protect UEFI PE/COFF image.
[in] | LoadedImage | The loaded image protocol |
[in] | LoadedImageDevicePath | The loaded image device path protocol |
Definition at line 330 of file MemoryProtection.c.
EFI_STATUS ReadFvbData | ( | IN EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL * | Fvb, |
IN OUT EFI_LBA * | StartLba, | ||
IN OUT UINTN * | Offset, | ||
IN UINTN | DataSize, | ||
OUT UINT8 * | Data | ||
) |
Read data from Firmware Block by FVB protocol Read. The data may cross the multi block ranges.
Fvb | The FW_VOL_BLOCK_PROTOCOL instance from which to read data. |
StartLba | Pointer to StartLba. On input, the start logical block index from which to read. On output,the end logical block index after reading. |
Offset | Pointer to Offset On input, offset into the block at which to begin reading. On output, offset into the end block after reading. |
DataSize | Size of data to be read. |
Data | Pointer to Buffer that the data will be read into. |
EFI_SUCCESS | Successfully read data from firmware block. |
others |
EFI_STATUS RegisterMemoryProfileImage | ( | IN LOADED_IMAGE_PRIVATE_DATA * | DriverEntry, |
IN EFI_FV_FILETYPE | FileType | ||
) |
Register image to memory profile.
DriverEntry | Image info. |
FileType | Image file type. |
Register image to memory profile.
DriverEntry | Image info. |
FileType | Image file type. |
Definition at line 694 of file MemoryProfileRecord.c.
VOID RemoveImageRecord | ( | IN EFI_RUNTIME_IMAGE_ENTRY * | RuntimeImage | ) |
Remove Image record.
RuntimeImage | Runtime image information |
Definition at line 672 of file MemoryAttributesTable.c.
VOID UnprotectUefiImage | ( | IN EFI_LOADED_IMAGE_PROTOCOL * | LoadedImage, |
IN EFI_DEVICE_PATH_PROTOCOL * | LoadedImageDevicePath | ||
) |
Unprotect UEFI image.
[in] | LoadedImage | The loaded image protocol |
[in] | LoadedImageDevicePath | The loaded image device path protocol |
Definition at line 399 of file MemoryProtection.c.
EFI_STATUS UnregisterMemoryProfileImage | ( | IN LOADED_IMAGE_PRIVATE_DATA * | DriverEntry | ) |
Unregister image from memory profile.
DriverEntry | Image info. |
Unregister image from memory profile.
DriverEntry | Image info. |
Definition at line 833 of file MemoryProfileRecord.c.
BOOLEAN VerifyFvHeaderChecksum | ( | IN EFI_FIRMWARE_VOLUME_HEADER * | FvHeader | ) |
|
extern |
|
extern |
|
extern |
Definition at line 61 of file Dispatcher.c.
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
Definition at line 93 of file MemoryAttributesTable.c.
|
extern |
|
extern |
Interface structure for the Metronome Architectural Protocol.
WaitForTick | Waits for a specified number of ticks from a known time source in the platform. The actual time passed between entry of this function and the first tick is between 0 and TickPeriod 100 nS units. If you want to guarantee that at least TickPeriod time has elapsed, wait for two ticks. |
TickPeriod | The period of platform's known time source in 100 nS units. This value on any platform must not exceed 200 uS. The value in this field is a constant that must not be modified after the Metronome architectural protocol is installed. All consumers must treat this as a read-only field. |
Definition at line 51 of file Metronome.c.
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
Interface structure for the Timer Architectural Protocol.
RegisterHandler | Registers a handler that will be called each time the timer interrupt fires. TimerPeriod defines the minimum time between timer interrupts, so TimerPeriod will also be the minimum time between calls to the registered handler. |
SetTimerPeriod | Sets the period of the timer interrupt in 100 nS units. This function is optional, and may return EFI_UNSUPPORTED. If this function is supported, then the timer period will be rounded up to the nearest supported timer period. |
GetTimerPeriod | Retrieves the period of the timer interrupt in 100 nS units. |
GenerateSoftInterrupt | Generates a soft timer interrupt that simulates the firing of the timer interrupt. This service can be used to invoke the registered handler if the timer interrupt has been masked for a period of time. |
Definition at line 264 of file TimerDxe.c.
|
extern |