| /** @file |
| Provides library functions for common UEFI operations. Only available to DXE |
| and UEFI module types. |
| |
| The UEFI Library provides functions and macros that simplify the development of |
| UEFI Drivers and UEFI Applications. These functions and macros help manage EFI |
| events, build simple locks utilizing EFI Task Priority Levels (TPLs), install |
| EFI Driver Model related protocols, manage Unicode string tables for UEFI Drivers, |
| and print messages on the console output and standard error devices. |
| |
| Note that a reserved macro named MDEPKG_NDEBUG is introduced for the intention |
| of size reduction when compiler optimization is disabled. If MDEPKG_NDEBUG is |
| defined, then debug and assert related macros wrapped by it are the NULL implementations. |
| |
| Copyright (c) 2019, NVIDIA Corporation. All rights reserved. |
| Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> |
| SPDX-License-Identifier: BSD-2-Clause-Patent |
| |
| **/ |
| |
| #ifndef __UEFI_LIB_H__ |
| #define __UEFI_LIB_H__ |
| |
| #include <IndustryStandard/Acpi.h> |
| |
| #include <Protocol/DriverBinding.h> |
| #include <Protocol/DriverConfiguration.h> |
| #include <Protocol/ComponentName.h> |
| #include <Protocol/ComponentName2.h> |
| #include <Protocol/DriverDiagnostics.h> |
| #include <Protocol/DriverDiagnostics2.h> |
| #include <Protocol/GraphicsOutput.h> |
| #include <Protocol/DevicePath.h> |
| #include <Protocol/SimpleFileSystem.h> |
| |
| #include <Library/BaseLib.h> |
| |
| /// |
| /// Unicode String Table |
| /// |
| typedef struct { |
| CHAR8 *Language; |
| CHAR16 *UnicodeString; |
| } EFI_UNICODE_STRING_TABLE; |
| |
| /// |
| /// EFI Lock Status |
| /// |
| typedef enum { |
| EfiLockUninitialized = 0, |
| EfiLockReleased = 1, |
| EfiLockAcquired = 2 |
| } EFI_LOCK_STATE; |
| |
| /// |
| /// EFI Lock |
| /// |
| typedef struct { |
| EFI_TPL Tpl; |
| EFI_TPL OwnerTpl; |
| EFI_LOCK_STATE Lock; |
| } EFI_LOCK; |
| |
| /** |
| Macro that returns the number of 100 ns units for a specified number of microseconds. |
| This is useful for managing EFI timer events. |
| |
| @param Microseconds The number of microseconds. |
| |
| @return The number of 100 ns units equivalent to the number of microseconds specified |
| by Microseconds. |
| |
| **/ |
| #define EFI_TIMER_PERIOD_MICROSECONDS(Microseconds) MultU64x32((UINT64)(Microseconds), 10) |
| |
| /** |
| Macro that returns the number of 100 ns units for a specified number of milliseconds. |
| This is useful for managing EFI timer events. |
| |
| @param Milliseconds The number of milliseconds. |
| |
| @return The number of 100 ns units equivalent to the number of milliseconds specified |
| by Milliseconds. |
| |
| **/ |
| #define EFI_TIMER_PERIOD_MILLISECONDS(Milliseconds) MultU64x32((UINT64)(Milliseconds), 10000) |
| |
| /** |
| Macro that returns the number of 100 ns units for a specified number of seconds. |
| This is useful for managing EFI timer events. |
| |
| @param Seconds The number of seconds. |
| |
| @return The number of 100 ns units equivalent to the number of seconds specified |
| by Seconds. |
| |
| **/ |
| #define EFI_TIMER_PERIOD_SECONDS(Seconds) MultU64x32((UINT64)(Seconds), 10000000) |
| |
| /** |
| Macro that returns the a pointer to the next EFI_MEMORY_DESCRIPTOR in an array |
| returned from GetMemoryMap(). |
| |
| @param MemoryDescriptor A pointer to an EFI_MEMORY_DESCRIPTOR. |
| |
| @param Size The size, in bytes, of the current EFI_MEMORY_DESCRIPTOR. |
| |
| @return A pointer to the next EFI_MEMORY_DESCRIPTOR. |
| |
| **/ |
| #define NEXT_MEMORY_DESCRIPTOR(MemoryDescriptor, Size) \ |
| ((EFI_MEMORY_DESCRIPTOR *)((UINT8 *)(MemoryDescriptor) + (Size))) |
| |
| /** |
| Retrieves a pointer to the system configuration table from the EFI System Table |
| based on a specified GUID. |
| |
| This function searches the list of configuration tables stored in the EFI System Table |
| for a table with a GUID that matches TableGuid. If a match is found, then a pointer to |
| the configuration table is returned in Table, and EFI_SUCCESS is returned. If a matching GUID |
| is not found, then EFI_NOT_FOUND is returned. |
| If TableGuid is NULL, then ASSERT(). |
| If Table is NULL, then ASSERT(). |
| |
| @param TableGuid The pointer to table's GUID type.. |
| @param Table The pointer to the table associated with TableGuid in the EFI System Table. |
| |
| @retval EFI_SUCCESS A configuration table matching TableGuid was found. |
| @retval EFI_NOT_FOUND A configuration table matching TableGuid could not be found. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiGetSystemConfigurationTable ( |
| IN EFI_GUID *TableGuid, |
| OUT VOID **Table |
| ); |
| |
| /** |
| Creates and returns a notification event and registers that event with all the protocol |
| instances specified by ProtocolGuid. |
| |
| This function causes the notification function to be executed for every protocol of type |
| ProtocolGuid instance that exists in the system when this function is invoked. If there are |
| no instances of ProtocolGuid in the handle database at the time this function is invoked, |
| then the notification function is still executed one time. In addition, every time a protocol |
| of type ProtocolGuid instance is installed or reinstalled, the notification function is also |
| executed. This function returns the notification event that was created. |
| If ProtocolGuid is NULL, then ASSERT(). |
| If NotifyTpl is not a legal TPL value, then ASSERT(). |
| If NotifyFunction is NULL, then ASSERT(). |
| If Registration is NULL, then ASSERT(). |
| |
| |
| @param ProtocolGuid Supplies GUID of the protocol upon whose installation the event is fired. |
| @param NotifyTpl Supplies the task priority level of the event notifications. |
| @param NotifyFunction Supplies the function to notify when the event is signaled. |
| @param NotifyContext The context parameter to pass to NotifyFunction. |
| @param Registration A pointer to a memory location to receive the registration value. |
| This value is passed to LocateHandle() to obtain new handles that |
| have been added that support the ProtocolGuid-specified protocol. |
| |
| @return The notification event that was created. |
| |
| **/ |
| EFI_EVENT |
| EFIAPI |
| EfiCreateProtocolNotifyEvent( |
| IN EFI_GUID *ProtocolGuid, |
| IN EFI_TPL NotifyTpl, |
| IN EFI_EVENT_NOTIFY NotifyFunction, |
| IN VOID *NotifyContext, OPTIONAL |
| OUT VOID **Registration |
| ); |
| |
| /** |
| Creates a named event that can be signaled with EfiNamedEventSignal(). |
| |
| This function creates an event using NotifyTpl, NoifyFunction, and NotifyContext. |
| This event is signaled with EfiNamedEventSignal(). This provides the ability for one or more |
| listeners on the same event named by the GUID specified by Name. |
| If Name is NULL, then ASSERT(). |
| If NotifyTpl is not a legal TPL value, then ASSERT(). |
| If NotifyFunction is NULL, then ASSERT(). |
| |
| @param Name Supplies GUID name of the event. |
| @param NotifyTpl Supplies the task priority level of the event notifications. |
| @param NotifyFunction Supplies the function to notify when the event is signaled. |
| @param NotifyContext The context parameter to pass to NotifyFunction. |
| @param Registration A pointer to a memory location to receive the registration value. |
| |
| @retval EFI_SUCCESS A named event was created. |
| @retval EFI_OUT_OF_RESOURCES There are not enough resources to create the named event. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiNamedEventListen ( |
| IN CONST EFI_GUID *Name, |
| IN EFI_TPL NotifyTpl, |
| IN EFI_EVENT_NOTIFY NotifyFunction, |
| IN CONST VOID *NotifyContext, OPTIONAL |
| OUT VOID *Registration OPTIONAL |
| ); |
| |
| /** |
| Signals a named event created with EfiNamedEventListen(). |
| |
| This function signals the named event specified by Name. The named event must have been |
| created with EfiNamedEventListen(). |
| If Name is NULL, then ASSERT(). |
| |
| @param Name Supplies the GUID name of the event. |
| |
| @retval EFI_SUCCESS A named event was signaled. |
| @retval EFI_OUT_OF_RESOURCES There are not enough resources to signal the named event. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiNamedEventSignal ( |
| IN CONST EFI_GUID *Name |
| ); |
| |
| /** |
| Signals an event group by placing a new event in the group temporarily and |
| signaling it. |
| |
| @param[in] EventGroup Supplies the unique identifier of the event |
| group to signal. |
| |
| @retval EFI_SUCCESS The event group was signaled successfully. |
| @retval EFI_INVALID_PARAMETER EventGroup is NULL. |
| @return Error codes that report problems about event |
| creation or signaling. |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiEventGroupSignal ( |
| IN CONST EFI_GUID *EventGroup |
| ); |
| |
| /** |
| An empty function that can be used as NotifyFunction parameter of |
| CreateEvent() or CreateEventEx(). |
| |
| @param Event Event whose notification function is being invoked. |
| @param Context The pointer to the notification function's context, |
| which is implementation-dependent. |
| |
| **/ |
| VOID |
| EFIAPI |
| EfiEventEmptyFunction ( |
| IN EFI_EVENT Event, |
| IN VOID *Context |
| ); |
| |
| /** |
| Returns the current TPL. |
| |
| This function returns the current TPL. There is no EFI service to directly |
| retrieve the current TPL. Instead, the RaiseTPL() function is used to raise |
| the TPL to TPL_HIGH_LEVEL. This will return the current TPL. The TPL level |
| can then immediately be restored back to the current TPL level with a call |
| to RestoreTPL(). |
| |
| @return The current TPL. |
| |
| **/ |
| EFI_TPL |
| EFIAPI |
| EfiGetCurrentTpl ( |
| VOID |
| ); |
| |
| /** |
| Initializes a basic mutual exclusion lock. |
| |
| This function initializes a basic mutual exclusion lock to the released state |
| and returns the lock. Each lock provides mutual exclusion access at its task |
| priority level. Since there is no preemption or multiprocessor support in EFI, |
| acquiring the lock only consists of raising to the locks TPL. |
| If Lock is NULL, then ASSERT(). |
| If Priority is not a valid TPL value, then ASSERT(). |
| |
| @param Lock A pointer to the lock data structure to initialize. |
| @param Priority The EFI TPL associated with the lock. |
| |
| @return The lock. |
| |
| **/ |
| EFI_LOCK * |
| EFIAPI |
| EfiInitializeLock ( |
| IN OUT EFI_LOCK *Lock, |
| IN EFI_TPL Priority |
| ); |
| |
| /** |
| Initializes a basic mutual exclusion lock. |
| |
| This macro initializes the contents of a basic mutual exclusion lock to the |
| released state. Each lock provides mutual exclusion access at its task |
| priority level. Since there is no preemption or multiprocessor support in EFI, |
| acquiring the lock only consists of raising to the locks TPL. |
| |
| @param Priority The task priority level of the lock. |
| |
| @return The lock. |
| |
| **/ |
| #define EFI_INITIALIZE_LOCK_VARIABLE(Priority) \ |
| {Priority, TPL_APPLICATION, EfiLockReleased } |
| |
| |
| /** |
| Macro that calls DebugAssert() if an EFI_LOCK structure is not in the locked state. |
| |
| If MDEPKG_NDEBUG is not defined and the DEBUG_PROPERTY_DEBUG_ASSERT_ENABLED |
| bit of PcdDebugProperyMask is set, then this macro evaluates the EFI_LOCK |
| structure specified by Lock. If Lock is not in the locked state, then |
| DebugAssert() is called passing in the source filename, source line number, |
| and Lock. |
| |
| If Lock is NULL, then ASSERT(). |
| |
| @param LockParameter A pointer to the lock to acquire. |
| |
| **/ |
| #if !defined(MDEPKG_NDEBUG) |
| #define ASSERT_LOCKED(LockParameter) \ |
| do { \ |
| if (DebugAssertEnabled ()) { \ |
| ASSERT (LockParameter != NULL); \ |
| if ((LockParameter)->Lock != EfiLockAcquired) { \ |
| _ASSERT (LockParameter not locked); \ |
| } \ |
| } \ |
| } while (FALSE) |
| #else |
| #define ASSERT_LOCKED(LockParameter) |
| #endif |
| |
| |
| /** |
| Acquires ownership of a lock. |
| |
| This function raises the system's current task priority level to the task |
| priority level of the mutual exclusion lock. Then, it places the lock in the |
| acquired state. |
| If Lock is NULL, then ASSERT(). |
| If Lock is not initialized, then ASSERT(). |
| If Lock is already in the acquired state, then ASSERT(). |
| |
| @param Lock A pointer to the lock to acquire. |
| |
| **/ |
| VOID |
| EFIAPI |
| EfiAcquireLock ( |
| IN EFI_LOCK *Lock |
| ); |
| |
| /** |
| Acquires ownership of a lock. |
| |
| This function raises the system's current task priority level to the task priority |
| level of the mutual exclusion lock. Then, it attempts to place the lock in the acquired state. |
| If the lock is already in the acquired state, then EFI_ACCESS_DENIED is returned. |
| Otherwise, EFI_SUCCESS is returned. |
| If Lock is NULL, then ASSERT(). |
| If Lock is not initialized, then ASSERT(). |
| |
| @param Lock A pointer to the lock to acquire. |
| |
| @retval EFI_SUCCESS The lock was acquired. |
| @retval EFI_ACCESS_DENIED The lock could not be acquired because it is already owned. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiAcquireLockOrFail ( |
| IN EFI_LOCK *Lock |
| ); |
| |
| /** |
| Releases ownership of a lock. |
| |
| This function transitions a mutual exclusion lock from the acquired state to |
| the released state, and restores the system's task priority level to its |
| previous level. |
| If Lock is NULL, then ASSERT(). |
| If Lock is not initialized, then ASSERT(). |
| If Lock is already in the released state, then ASSERT(). |
| |
| @param Lock A pointer to the lock to release. |
| |
| **/ |
| VOID |
| EFIAPI |
| EfiReleaseLock ( |
| IN EFI_LOCK *Lock |
| ); |
| |
| /** |
| Tests whether a controller handle is being managed by a specific driver. |
| |
| This function tests whether the driver specified by DriverBindingHandle is |
| currently managing the controller specified by ControllerHandle. This test |
| is performed by evaluating if the the protocol specified by ProtocolGuid is |
| present on ControllerHandle and is was opened by DriverBindingHandle with an |
| attribute of EFI_OPEN_PROTOCOL_BY_DRIVER. |
| If ProtocolGuid is NULL, then ASSERT(). |
| |
| @param ControllerHandle A handle for a controller to test. |
| @param DriverBindingHandle Specifies the driver binding handle for the |
| driver. |
| @param ProtocolGuid Specifies the protocol that the driver specified |
| by DriverBindingHandle opens in its Start() |
| function. |
| |
| @retval EFI_SUCCESS ControllerHandle is managed by the driver |
| specified by DriverBindingHandle. |
| @retval EFI_UNSUPPORTED ControllerHandle is not managed by the driver |
| specified by DriverBindingHandle. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiTestManagedDevice ( |
| IN CONST EFI_HANDLE ControllerHandle, |
| IN CONST EFI_HANDLE DriverBindingHandle, |
| IN CONST EFI_GUID *ProtocolGuid |
| ); |
| |
| /** |
| Tests whether a child handle is a child device of the controller. |
| |
| This function tests whether ChildHandle is one of the children of |
| ControllerHandle. This test is performed by checking to see if the protocol |
| specified by ProtocolGuid is present on ControllerHandle and opened by |
| ChildHandle with an attribute of EFI_OPEN_PROTOCOL_BY_CHILD_CONTROLLER. |
| If ProtocolGuid is NULL, then ASSERT(). |
| |
| @param ControllerHandle A handle for a (parent) controller to test. |
| @param ChildHandle A child handle to test. |
| @param ProtocolGuid Supplies the protocol that the child controller |
| opens on its parent controller. |
| |
| @retval EFI_SUCCESS ChildHandle is a child of the ControllerHandle. |
| @retval EFI_UNSUPPORTED ChildHandle is not a child of the |
| ControllerHandle. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiTestChildHandle ( |
| IN CONST EFI_HANDLE ControllerHandle, |
| IN CONST EFI_HANDLE ChildHandle, |
| IN CONST EFI_GUID *ProtocolGuid |
| ); |
| |
| /** |
| This function checks the supported languages list for a target language, |
| This only supports RFC 4646 Languages. |
| |
| @param SupportedLanguages The supported languages |
| @param TargetLanguage The target language |
| |
| @retval Returns EFI_SUCCESS if the language is supported, |
| EFI_UNSUPPORTED otherwise |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| IsLanguageSupported ( |
| IN CONST CHAR8 *SupportedLanguages, |
| IN CONST CHAR8 *TargetLanguage |
| ); |
| |
| /** |
| This function looks up a Unicode string in UnicodeStringTable. |
| |
| If Language is a member of SupportedLanguages and a Unicode string is found in |
| UnicodeStringTable that matches the language code specified by Language, then it |
| is returned in UnicodeString. |
| |
| @param Language A pointer to the ISO 639-2 language code for the |
| Unicode string to look up and return. |
| @param SupportedLanguages A pointer to the set of ISO 639-2 language codes |
| that the Unicode string table supports. Language |
| must be a member of this set. |
| @param UnicodeStringTable A pointer to the table of Unicode strings. |
| @param UnicodeString A pointer to the Unicode string from UnicodeStringTable |
| that matches the language specified by Language. |
| |
| @retval EFI_SUCCESS The Unicode string that matches the language |
| specified by Language was found |
| in the table of Unicode strings UnicodeStringTable, |
| and it was returned in UnicodeString. |
| @retval EFI_INVALID_PARAMETER Language is NULL. |
| @retval EFI_INVALID_PARAMETER UnicodeString is NULL. |
| @retval EFI_UNSUPPORTED SupportedLanguages is NULL. |
| @retval EFI_UNSUPPORTED UnicodeStringTable is NULL. |
| @retval EFI_UNSUPPORTED The language specified by Language is not a |
| member of SupportedLanguages. |
| @retval EFI_UNSUPPORTED The language specified by Language is not |
| supported by UnicodeStringTable. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| LookupUnicodeString ( |
| IN CONST CHAR8 *Language, |
| IN CONST CHAR8 *SupportedLanguages, |
| IN CONST EFI_UNICODE_STRING_TABLE *UnicodeStringTable, |
| OUT CHAR16 **UnicodeString |
| ); |
| |
| /** |
| This function looks up a Unicode string in UnicodeStringTable. |
| |
| If Language is a member of SupportedLanguages and a Unicode string is found in |
| UnicodeStringTable that matches the language code specified by Language, then |
| it is returned in UnicodeString. |
| |
| @param Language A pointer to an ASCII string containing the ISO 639-2 or the |
| RFC 4646 language code for the Unicode string to look up and |
| return. If Iso639Language is TRUE, then this ASCII string is |
| not assumed to be Null-terminated, and only the first three |
| characters are used. If Iso639Language is FALSE, then this ASCII |
| string must be Null-terminated. |
| @param SupportedLanguages A pointer to a Null-terminated ASCII string that contains a |
| set of ISO 639-2 or RFC 4646 language codes that the Unicode |
| string table supports. Language must be a member of this set. |
| If Iso639Language is TRUE, then this string contains one or more |
| ISO 639-2 language codes with no separator characters. If Iso639Language |
| is FALSE, then is string contains one or more RFC 4646 language |
| codes separated by ';'. |
| @param UnicodeStringTable A pointer to the table of Unicode strings. Type EFI_UNICODE_STRING_TABLE |
| is defined in "Related Definitions". |
| @param UnicodeString A pointer to the Null-terminated Unicode string from UnicodeStringTable |
| that matches the language specified by Language. |
| @param Iso639Language Specifies the supported language code format. If it is TRUE, then |
| Language and SupportedLanguages follow ISO 639-2 language code format. |
| Otherwise, they follow the RFC 4646 language code format. |
| |
| |
| @retval EFI_SUCCESS The Unicode string that matches the language specified by Language |
| was found in the table of Unicode strings UnicodeStringTable, and |
| it was returned in UnicodeString. |
| @retval EFI_INVALID_PARAMETER Language is NULL. |
| @retval EFI_INVALID_PARAMETER UnicodeString is NULL. |
| @retval EFI_UNSUPPORTED SupportedLanguages is NULL. |
| @retval EFI_UNSUPPORTED UnicodeStringTable is NULL. |
| @retval EFI_UNSUPPORTED The language specified by Language is not a member of SupportedLanguages. |
| @retval EFI_UNSUPPORTED The language specified by Language is not supported by UnicodeStringTable. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| LookupUnicodeString2 ( |
| IN CONST CHAR8 *Language, |
| IN CONST CHAR8 *SupportedLanguages, |
| IN CONST EFI_UNICODE_STRING_TABLE *UnicodeStringTable, |
| OUT CHAR16 **UnicodeString, |
| IN BOOLEAN Iso639Language |
| ); |
| |
| /** |
| This function adds a Unicode string to UnicodeStringTable. |
| |
| If Language is a member of SupportedLanguages then UnicodeString is added to |
| UnicodeStringTable. New buffers are allocated for both Language and |
| UnicodeString. The contents of Language and UnicodeString are copied into |
| these new buffers. These buffers are automatically freed when |
| FreeUnicodeStringTable() is called. |
| |
| @param Language A pointer to the ISO 639-2 language code for the Unicode |
| string to add. |
| @param SupportedLanguages A pointer to the set of ISO 639-2 language codes |
| that the Unicode string table supports. |
| Language must be a member of this set. |
| @param UnicodeStringTable A pointer to the table of Unicode strings. |
| @param UnicodeString A pointer to the Unicode string to add. |
| |
| @retval EFI_SUCCESS The Unicode string that matches the language |
| specified by Language was found in the table of |
| Unicode strings UnicodeStringTable, and it was |
| returned in UnicodeString. |
| @retval EFI_INVALID_PARAMETER Language is NULL. |
| @retval EFI_INVALID_PARAMETER UnicodeString is NULL. |
| @retval EFI_INVALID_PARAMETER UnicodeString is an empty string. |
| @retval EFI_UNSUPPORTED SupportedLanguages is NULL. |
| @retval EFI_ALREADY_STARTED A Unicode string with language Language is |
| already present in UnicodeStringTable. |
| @retval EFI_OUT_OF_RESOURCES There is not enough memory to add another |
| Unicode string to UnicodeStringTable. |
| @retval EFI_UNSUPPORTED The language specified by Language is not a |
| member of SupportedLanguages. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| AddUnicodeString ( |
| IN CONST CHAR8 *Language, |
| IN CONST CHAR8 *SupportedLanguages, |
| IN OUT EFI_UNICODE_STRING_TABLE **UnicodeStringTable, |
| IN CONST CHAR16 *UnicodeString |
| ); |
| |
| /** |
| This function adds the Null-terminated Unicode string specified by UnicodeString |
| to UnicodeStringTable. |
| |
| If Language is a member of SupportedLanguages then UnicodeString is added to |
| UnicodeStringTable. New buffers are allocated for both Language and UnicodeString. |
| The contents of Language and UnicodeString are copied into these new buffers. |
| These buffers are automatically freed when EfiLibFreeUnicodeStringTable() is called. |
| |
| @param Language A pointer to an ASCII string containing the ISO 639-2 or |
| the RFC 4646 language code for the Unicode string to add. |
| If Iso639Language is TRUE, then this ASCII string is not |
| assumed to be Null-terminated, and only the first three |
| chacters are used. If Iso639Language is FALSE, then this |
| ASCII string must be Null-terminated. |
| @param SupportedLanguages A pointer to a Null-terminated ASCII string that contains |
| a set of ISO 639-2 or RFC 4646 language codes that the Unicode |
| string table supports. Language must be a member of this set. |
| If Iso639Language is TRUE, then this string contains one or more |
| ISO 639-2 language codes with no separator characters. |
| If Iso639Language is FALSE, then is string contains one or more |
| RFC 4646 language codes separated by ';'. |
| @param UnicodeStringTable A pointer to the table of Unicode strings. Type EFI_UNICODE_STRING_TABLE |
| is defined in "Related Definitions". |
| @param UnicodeString A pointer to the Unicode string to add. |
| @param Iso639Language Specifies the supported language code format. If it is TRUE, |
| then Language and SupportedLanguages follow ISO 639-2 language code format. |
| Otherwise, they follow RFC 4646 language code format. |
| |
| @retval EFI_SUCCESS The Unicode string that matches the language specified by |
| Language was found in the table of Unicode strings UnicodeStringTable, |
| and it was returned in UnicodeString. |
| @retval EFI_INVALID_PARAMETER Language is NULL. |
| @retval EFI_INVALID_PARAMETER UnicodeString is NULL. |
| @retval EFI_INVALID_PARAMETER UnicodeString is an empty string. |
| @retval EFI_UNSUPPORTED SupportedLanguages is NULL. |
| @retval EFI_ALREADY_STARTED A Unicode string with language Language is already present in |
| UnicodeStringTable. |
| @retval EFI_OUT_OF_RESOURCES There is not enough memory to add another Unicode string UnicodeStringTable. |
| @retval EFI_UNSUPPORTED The language specified by Language is not a member of SupportedLanguages. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| AddUnicodeString2 ( |
| IN CONST CHAR8 *Language, |
| IN CONST CHAR8 *SupportedLanguages, |
| IN OUT EFI_UNICODE_STRING_TABLE **UnicodeStringTable, |
| IN CONST CHAR16 *UnicodeString, |
| IN BOOLEAN Iso639Language |
| ); |
| |
| /** |
| This function frees the table of Unicode strings in UnicodeStringTable. |
| |
| If UnicodeStringTable is NULL, then EFI_SUCCESS is returned. |
| Otherwise, each language code, and each Unicode string in the Unicode string |
| table are freed, and EFI_SUCCESS is returned. |
| |
| @param UnicodeStringTable A pointer to the table of Unicode strings. |
| |
| @retval EFI_SUCCESS The Unicode string table was freed. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| FreeUnicodeStringTable ( |
| IN EFI_UNICODE_STRING_TABLE *UnicodeStringTable |
| ); |
| |
| |
| /** |
| Returns the status whether get the variable success. The function retrieves |
| variable through the UEFI Runtime Service GetVariable(). The |
| returned buffer is allocated using AllocatePool(). The caller is responsible |
| for freeing this buffer with FreePool(). |
| |
| If Name is NULL, then ASSERT(). |
| If Guid is NULL, then ASSERT(). |
| If Value is NULL, then ASSERT(). |
| |
| @param[in] Name The pointer to a Null-terminated Unicode string. |
| @param[in] Guid The pointer to an EFI_GUID structure |
| @param[out] Value The buffer point saved the variable info. |
| @param[out] Size The buffer size of the variable. |
| |
| @retval EFI_OUT_OF_RESOURCES Allocate buffer failed. |
| @retval EFI_SUCCESS Find the specified variable. |
| @retval Others Errors Return errors from call to gRT->GetVariable. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| GetVariable2 ( |
| IN CONST CHAR16 *Name, |
| IN CONST EFI_GUID *Guid, |
| OUT VOID **Value, |
| OUT UINTN *Size OPTIONAL |
| ); |
| |
| /** |
| Returns a pointer to an allocated buffer that contains the contents of a |
| variable retrieved through the UEFI Runtime Service GetVariable(). This |
| function always uses the EFI_GLOBAL_VARIABLE GUID to retrieve variables. |
| The returned buffer is allocated using AllocatePool(). The caller is |
| responsible for freeing this buffer with FreePool(). |
| |
| If Name is NULL, then ASSERT(). |
| If Value is NULL, then ASSERT(). |
| |
| @param[in] Name The pointer to a Null-terminated Unicode string. |
| @param[out] Value The buffer point saved the variable info. |
| @param[out] Size The buffer size of the variable. |
| |
| @retval EFI_OUT_OF_RESOURCES Allocate buffer failed. |
| @retval EFI_SUCCESS Find the specified variable. |
| @retval Others Errors Return errors from call to gRT->GetVariable. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| GetEfiGlobalVariable2 ( |
| IN CONST CHAR16 *Name, |
| OUT VOID **Value, |
| OUT UINTN *Size OPTIONAL |
| ); |
| |
| /** Return the attributes of the variable. |
| |
| Returns the status whether get the variable success. The function retrieves |
| variable through the UEFI Runtime Service GetVariable(). The |
| returned buffer is allocated using AllocatePool(). The caller is responsible |
| for freeing this buffer with FreePool(). The attributes are returned if |
| the caller provides a valid Attribute parameter. |
| |
| If Name is NULL, then ASSERT(). |
| If Guid is NULL, then ASSERT(). |
| If Value is NULL, then ASSERT(). |
| |
| @param[in] Name The pointer to a Null-terminated Unicode string. |
| @param[in] Guid The pointer to an EFI_GUID structure |
| @param[out] Value The buffer point saved the variable info. |
| @param[out] Size The buffer size of the variable. |
| @param[out] Attr The pointer to the variable attributes as found in var store |
| |
| @retval EFI_OUT_OF_RESOURCES Allocate buffer failed. |
| @retval EFI_SUCCESS Find the specified variable. |
| @retval Others Errors Return errors from call to gRT->GetVariable. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| GetVariable3( |
| IN CONST CHAR16 *Name, |
| IN CONST EFI_GUID *Guid, |
| OUT VOID **Value, |
| OUT UINTN *Size OPTIONAL, |
| OUT UINT32 *Attr OPTIONAL |
| ); |
| |
| /** |
| Returns a pointer to an allocated buffer that contains the best matching language |
| from a set of supported languages. |
| |
| This function supports both ISO 639-2 and RFC 4646 language codes, but language |
| code types may not be mixed in a single call to this function. The language |
| code returned is allocated using AllocatePool(). The caller is responsible for |
| freeing the allocated buffer using FreePool(). This function supports a variable |
| argument list that allows the caller to pass in a prioritized list of language |
| codes to test against all the language codes in SupportedLanguages. |
| |
| If SupportedLanguages is NULL, then ASSERT(). |
| |
| @param[in] SupportedLanguages A pointer to a Null-terminated ASCII string that |
| contains a set of language codes in the format |
| specified by Iso639Language. |
| @param[in] Iso639Language If not zero, then all language codes are assumed to be |
| in ISO 639-2 format. If zero, then all language |
| codes are assumed to be in RFC 4646 language format |
| @param[in] ... A variable argument list that contains pointers to |
| Null-terminated ASCII strings that contain one or more |
| language codes in the format specified by Iso639Language. |
| The first language code from each of these language |
| code lists is used to determine if it is an exact or |
| close match to any of the language codes in |
| SupportedLanguages. Close matches only apply to RFC 4646 |
| language codes, and the matching algorithm from RFC 4647 |
| is used to determine if a close match is present. If |
| an exact or close match is found, then the matching |
| language code from SupportedLanguages is returned. If |
| no matches are found, then the next variable argument |
| parameter is evaluated. The variable argument list |
| is terminated by a NULL. |
| |
| @retval NULL The best matching language could not be found in SupportedLanguages. |
| @retval NULL There are not enough resources available to return the best matching |
| language. |
| @retval Other A pointer to a Null-terminated ASCII string that is the best matching |
| language in SupportedLanguages. |
| |
| **/ |
| CHAR8 * |
| EFIAPI |
| GetBestLanguage ( |
| IN CONST CHAR8 *SupportedLanguages, |
| IN UINTN Iso639Language, |
| ... |
| ); |
| |
| /** |
| Draws a dialog box to the console output device specified by |
| ConOut defined in the EFI_SYSTEM_TABLE and waits for a keystroke |
| from the console input device specified by ConIn defined in the |
| EFI_SYSTEM_TABLE. |
| |
| If there are no strings in the variable argument list, then ASSERT(). |
| If all the strings in the variable argument list are empty, then ASSERT(). |
| |
| @param[in] Attribute Specifies the foreground and background color of the popup. |
| @param[out] Key A pointer to the EFI_KEY value of the key that was |
| pressed. This is an optional parameter that may be NULL. |
| If it is NULL then no wait for a keypress will be performed. |
| @param[in] ... The variable argument list that contains pointers to Null- |
| terminated Unicode strings to display in the dialog box. |
| The variable argument list is terminated by a NULL. |
| |
| **/ |
| VOID |
| EFIAPI |
| CreatePopUp ( |
| IN UINTN Attribute, |
| OUT EFI_INPUT_KEY *Key, OPTIONAL |
| ... |
| ); |
| |
| /** |
| Retrieves the width of a Unicode character. |
| |
| This function computes and returns the width of the Unicode character specified |
| by UnicodeChar. |
| |
| @param UnicodeChar A Unicode character. |
| |
| @retval 0 The width if UnicodeChar could not be determined. |
| @retval 1 UnicodeChar is a narrow glyph. |
| @retval 2 UnicodeChar is a wide glyph. |
| |
| **/ |
| UINTN |
| EFIAPI |
| GetGlyphWidth ( |
| IN CHAR16 UnicodeChar |
| ); |
| |
| /** |
| Computes the display length of a Null-terminated Unicode String. |
| |
| This function computes and returns the display length of the Null-terminated Unicode |
| string specified by String. If String is NULL then 0 is returned. If any of the widths |
| of the Unicode characters in String can not be determined, then 0 is returned. The display |
| width of String can be computed by summing the display widths of each Unicode character |
| in String. Unicode characters that are narrow glyphs have a width of 1, and Unicode |
| characters that are width glyphs have a width of 2. |
| If String is not aligned on a 16-bit boundary, then ASSERT(). |
| |
| @param String A pointer to a Null-terminated Unicode string. |
| |
| @return The display length of the Null-terminated Unicode string specified by String. |
| |
| **/ |
| UINTN |
| EFIAPI |
| UnicodeStringDisplayLength ( |
| IN CONST CHAR16 *String |
| ); |
| |
| // |
| // Functions that abstract early Framework contamination of UEFI. |
| // |
| /** |
| Create, Signal, and Close the Ready to Boot event using EfiSignalEventReadyToBoot(). |
| |
| This function abstracts the signaling of the Ready to Boot Event. The Framework moved |
| from a proprietary to UEFI 2.0 based mechanism. This library abstracts the caller |
| from how this event is created to prevent to code form having to change with the |
| version of the specification supported. |
| |
| **/ |
| VOID |
| EFIAPI |
| EfiSignalEventReadyToBoot ( |
| VOID |
| ); |
| |
| /** |
| Create, Signal, and Close the Ready to Boot event using EfiSignalEventLegacyBoot(). |
| |
| This function abstracts the signaling of the Legacy Boot Event. The Framework moved from |
| a proprietary to UEFI 2.0 based mechanism. This library abstracts the caller from how |
| this event is created to prevent to code form having to change with the version of the |
| specification supported. |
| |
| **/ |
| VOID |
| EFIAPI |
| EfiSignalEventLegacyBoot ( |
| VOID |
| ); |
| |
| /** |
| Creates an EFI event in the Legacy Boot Event Group. |
| |
| Prior to UEFI 2.0 this was done via a non blessed UEFI extensions and this library |
| abstracts the implementation mechanism of this event from the caller. This function |
| abstracts the creation of the Legacy Boot Event. The Framework moved from a proprietary |
| to UEFI 2.0 based mechanism. This library abstracts the caller from how this event |
| is created to prevent to code form having to change with the version of the |
| specification supported. |
| If LegacyBootEvent is NULL, then ASSERT(). |
| |
| @param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex). |
| |
| @retval EFI_SUCCESS The event was created. |
| @retval Other The event was not created. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiCreateEventLegacyBoot ( |
| OUT EFI_EVENT *LegacyBootEvent |
| ); |
| |
| /** |
| Create an EFI event in the Legacy Boot Event Group and allows |
| the caller to specify a notification function. |
| |
| This function abstracts the creation of the Legacy Boot Event. |
| The Framework moved from a proprietary to UEFI 2.0 based mechanism. |
| This library abstracts the caller from how this event is created to prevent |
| to code form having to change with the version of the specification supported. |
| If LegacyBootEvent is NULL, then ASSERT(). |
| |
| @param NotifyTpl The task priority level of the event. |
| @param NotifyFunction The notification function to call when the event is signaled. |
| @param NotifyContext The content to pass to NotifyFunction when the event is signaled. |
| @param LegacyBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex). |
| |
| @retval EFI_SUCCESS The event was created. |
| @retval Other The event was not created. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiCreateEventLegacyBootEx ( |
| IN EFI_TPL NotifyTpl, |
| IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL |
| IN VOID *NotifyContext, OPTIONAL |
| OUT EFI_EVENT *LegacyBootEvent |
| ); |
| |
| /** |
| Create an EFI event in the Ready To Boot Event Group. |
| |
| Prior to UEFI 2.0 this was done via a non-standard UEFI extension, and this library |
| abstracts the implementation mechanism of this event from the caller. |
| This function abstracts the creation of the Ready to Boot Event. The Framework |
| moved from a proprietary to UEFI 2.0-based mechanism. This library abstracts |
| the caller from how this event is created to prevent the code form having to |
| change with the version of the specification supported. |
| If ReadyToBootEvent is NULL, then ASSERT(). |
| |
| @param ReadyToBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex). |
| |
| @retval EFI_SUCCESS The event was created. |
| @retval Other The event was not created. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiCreateEventReadyToBoot ( |
| OUT EFI_EVENT *ReadyToBootEvent |
| ); |
| |
| /** |
| Create an EFI event in the Ready To Boot Event Group and allows |
| the caller to specify a notification function. |
| |
| This function abstracts the creation of the Ready to Boot Event. |
| The Framework moved from a proprietary to UEFI 2.0 based mechanism. |
| This library abstracts the caller from how this event is created to prevent |
| to code form having to change with the version of the specification supported. |
| If ReadyToBootEvent is NULL, then ASSERT(). |
| |
| @param NotifyTpl The task priority level of the event. |
| @param NotifyFunction The notification function to call when the event is signaled. |
| @param NotifyContext The content to pass to NotifyFunction when the event is signaled. |
| @param ReadyToBootEvent Returns the EFI event returned from gBS->CreateEvent(Ex). |
| |
| @retval EFI_SUCCESS The event was created. |
| @retval Other The event was not created. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiCreateEventReadyToBootEx ( |
| IN EFI_TPL NotifyTpl, |
| IN EFI_EVENT_NOTIFY NotifyFunction, OPTIONAL |
| IN VOID *NotifyContext, OPTIONAL |
| OUT EFI_EVENT *ReadyToBootEvent |
| ); |
| |
| /** |
| Initialize a Firmware Volume (FV) Media Device Path node. |
| |
| The Framework FwVol Device Path changed to conform to the UEFI 2.0 specification. |
| This library function abstracts initializing a device path node. |
| Initialize the MEDIA_FW_VOL_FILEPATH_DEVICE_PATH data structure. This device |
| path changed in the DXE CIS version 0.92 in a non back ward compatible way to |
| not conflict with the UEFI 2.0 specification. This function abstracts the |
| differences from the caller. |
| If FvDevicePathNode is NULL, then ASSERT(). |
| If NameGuid is NULL, then ASSERT(). |
| |
| @param FvDevicePathNode The pointer to a FV device path node to initialize |
| @param NameGuid FV file name to use in FvDevicePathNode |
| |
| **/ |
| VOID |
| EFIAPI |
| EfiInitializeFwVolDevicepathNode ( |
| IN OUT MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvDevicePathNode, |
| IN CONST EFI_GUID *NameGuid |
| ); |
| |
| /** |
| Check to see if the Firmware Volume (FV) Media Device Path is valid |
| |
| The Framework FwVol Device Path changed to conform to the UEFI 2.0 specification. |
| This library function abstracts validating a device path node. |
| Check the MEDIA_FW_VOL_FILEPATH_DEVICE_PATH data structure to see if it's valid. |
| If it is valid, then return the GUID file name from the device path node. Otherwise, |
| return NULL. This device path changed in the DXE CIS version 0.92 in a non backward |
| compatible way to not conflict with the UEFI 2.0 specification. This function abstracts |
| the differences from the caller. |
| If FvDevicePathNode is NULL, then ASSERT(). |
| |
| @param FvDevicePathNode The pointer to FV device path to check. |
| |
| @retval NULL FvDevicePathNode is not valid. |
| @retval Other FvDevicePathNode is valid and pointer to NameGuid was returned. |
| |
| **/ |
| EFI_GUID * |
| EFIAPI |
| EfiGetNameGuidFromFwVolDevicePathNode ( |
| IN CONST MEDIA_FW_VOL_FILEPATH_DEVICE_PATH *FvDevicePathNode |
| ); |
| |
| /** |
| Prints a formatted Unicode string to the console output device specified by |
| ConOut defined in the EFI_SYSTEM_TABLE. |
| |
| This function prints a formatted Unicode string to the console output device |
| specified by ConOut in EFI_SYSTEM_TABLE and returns the number of Unicode |
| characters that printed to ConOut. If the length of the formatted Unicode |
| string is greater than PcdUefiLibMaxPrintBufferSize, then only the first |
| PcdUefiLibMaxPrintBufferSize characters are sent to ConOut. |
| If Format is NULL, then ASSERT(). |
| If Format is not aligned on a 16-bit boundary, then ASSERT(). |
| If gST->ConOut is NULL, then ASSERT(). |
| |
| @param Format A null-terminated Unicode format string. |
| @param ... The variable argument list whose contents are accessed based |
| on the format string specified by Format. |
| |
| @return Number of Unicode characters printed to ConOut. |
| |
| **/ |
| UINTN |
| EFIAPI |
| Print ( |
| IN CONST CHAR16 *Format, |
| ... |
| ); |
| |
| /** |
| Prints a formatted Unicode string to the console output device specified by |
| StdErr defined in the EFI_SYSTEM_TABLE. |
| |
| This function prints a formatted Unicode string to the console output device |
| specified by StdErr in EFI_SYSTEM_TABLE and returns the number of Unicode |
| characters that printed to StdErr. If the length of the formatted Unicode |
| string is greater than PcdUefiLibMaxPrintBufferSize, then only the first |
| PcdUefiLibMaxPrintBufferSize characters are sent to StdErr. |
| If Format is NULL, then ASSERT(). |
| If Format is not aligned on a 16-bit boundary, then ASSERT(). |
| If gST->StdErr is NULL, then ASSERT(). |
| |
| @param Format A null-terminated Unicode format string. |
| @param ... The variable argument list whose contents are accessed based |
| on the format string specified by Format. |
| |
| @return Number of Unicode characters printed to StdErr. |
| |
| **/ |
| UINTN |
| EFIAPI |
| ErrorPrint ( |
| IN CONST CHAR16 *Format, |
| ... |
| ); |
| |
| /** |
| Prints a formatted ASCII string to the console output device specified by |
| ConOut defined in the EFI_SYSTEM_TABLE. |
| |
| This function prints a formatted ASCII string to the console output device |
| specified by ConOut in EFI_SYSTEM_TABLE and returns the number of ASCII |
| characters that printed to ConOut. If the length of the formatted ASCII |
| string is greater than PcdUefiLibMaxPrintBufferSize, then only the first |
| PcdUefiLibMaxPrintBufferSize characters are sent to ConOut. |
| If Format is NULL, then ASSERT(). |
| If gST->ConOut is NULL, then ASSERT(). |
| |
| @param Format A null-terminated ASCII format string. |
| @param ... The variable argument list whose contents are accessed based |
| on the format string specified by Format. |
| |
| @return Number of ASCII characters printed to ConOut. |
| |
| **/ |
| UINTN |
| EFIAPI |
| AsciiPrint ( |
| IN CONST CHAR8 *Format, |
| ... |
| ); |
| |
| /** |
| Prints a formatted ASCII string to the console output device specified by |
| StdErr defined in the EFI_SYSTEM_TABLE. |
| |
| This function prints a formatted ASCII string to the console output device |
| specified by StdErr in EFI_SYSTEM_TABLE and returns the number of ASCII |
| characters that printed to StdErr. If the length of the formatted ASCII |
| string is greater than PcdUefiLibMaxPrintBufferSize, then only the first |
| PcdUefiLibMaxPrintBufferSize characters are sent to StdErr. |
| If Format is NULL, then ASSERT(). |
| If gST->StdErr is NULL, then ASSERT(). |
| |
| @param Format A null-terminated ASCII format string. |
| @param ... The variable argument list whose contents are accessed based |
| on the format string specified by Format. |
| |
| @return Number of ASCII characters printed to ConErr. |
| |
| **/ |
| UINTN |
| EFIAPI |
| AsciiErrorPrint ( |
| IN CONST CHAR8 *Format, |
| ... |
| ); |
| |
| |
| /** |
| Prints a formatted Unicode string to a graphics console device specified by |
| ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates. |
| |
| This function prints a formatted Unicode string to the graphics console device |
| specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of |
| Unicode characters displayed, not including partial characters that may be clipped |
| by the right edge of the display. If the length of the formatted Unicode string is |
| greater than PcdUefiLibMaxPrintBufferSize, then at most the first |
| PcdUefiLibMaxPrintBufferSize characters are printed. The EFI_HII_FONT_PROTOCOL |
| is used to convert the string to a bitmap using the glyphs registered with the |
| HII database. No wrapping is performed, so any portions of the string the fall |
| outside the active display region will not be displayed. |
| |
| If a graphics console device is not associated with the ConsoleOutputHandle |
| defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned. |
| If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no |
| string is printed, and 0 is returned. |
| If Format is NULL, then ASSERT(). |
| If Format is not aligned on a 16-bit boundary, then ASSERT(). |
| If gST->ConsoleOutputHandle is NULL, then ASSERT(). |
| |
| @param PointX X coordinate to print the string. |
| @param PointY Y coordinate to print the string. |
| @param ForeGround The foreground color of the string being printed. This is |
| an optional parameter that may be NULL. If it is NULL, |
| then the foreground color of the current ConOut device |
| in the EFI_SYSTEM_TABLE is used. |
| @param BackGround The background color of the string being printed. This is |
| an optional parameter that may be NULL. If it is NULL, |
| then the background color of the current ConOut device |
| in the EFI_SYSTEM_TABLE is used. |
| @param Format A null-terminated Unicode format string. See Print Library |
| for the supported format string syntax. |
| @param ... Variable argument list whose contents are accessed based on |
| the format string specified by Format. |
| |
| @return The number of Unicode characters printed. |
| |
| **/ |
| UINTN |
| EFIAPI |
| PrintXY ( |
| IN UINTN PointX, |
| IN UINTN PointY, |
| IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *ForeGround, OPTIONAL |
| IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackGround, OPTIONAL |
| IN CONST CHAR16 *Format, |
| ... |
| ); |
| |
| /** |
| Prints a formatted ASCII string to a graphics console device specified by |
| ConsoleOutputHandle defined in the EFI_SYSTEM_TABLE at the given (X,Y) coordinates. |
| |
| This function prints a formatted ASCII string to the graphics console device |
| specified by ConsoleOutputHandle in EFI_SYSTEM_TABLE and returns the number of |
| ASCII characters displayed, not including partial characters that may be clipped |
| by the right edge of the display. If the length of the formatted ASCII string is |
| greater than PcdUefiLibMaxPrintBufferSize, then at most the first |
| PcdUefiLibMaxPrintBufferSize characters are printed. The EFI_HII_FONT_PROTOCOL |
| is used to convert the string to a bitmap using the glyphs registered with the |
| HII database. No wrapping is performed, so any portions of the string the fall |
| outside the active display region will not be displayed. |
| |
| If a graphics console device is not associated with the ConsoleOutputHandle |
| defined in the EFI_SYSTEM_TABLE then no string is printed, and 0 is returned. |
| If the EFI_HII_FONT_PROTOCOL is not present in the handle database, then no |
| string is printed, and 0 is returned. |
| If Format is NULL, then ASSERT(). |
| If gST->ConsoleOutputHandle is NULL, then ASSERT(). |
| |
| @param PointX X coordinate to print the string. |
| @param PointY Y coordinate to print the string. |
| @param ForeGround The foreground color of the string being printed. This is |
| an optional parameter that may be NULL. If it is NULL, |
| then the foreground color of the current ConOut device |
| in the EFI_SYSTEM_TABLE is used. |
| @param BackGround The background color of the string being printed. This is |
| an optional parameter that may be NULL. If it is NULL, |
| then the background color of the current ConOut device |
| in the EFI_SYSTEM_TABLE is used. |
| @param Format A null-terminated ASCII format string. See Print Library |
| for the supported format string syntax. |
| @param ... The variable argument list whose contents are accessed based on |
| the format string specified by Format. |
| |
| @return The number of ASCII characters printed. |
| |
| **/ |
| UINTN |
| EFIAPI |
| AsciiPrintXY ( |
| IN UINTN PointX, |
| IN UINTN PointY, |
| IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *ForeGround, OPTIONAL |
| IN EFI_GRAPHICS_OUTPUT_BLT_PIXEL *BackGround, OPTIONAL |
| IN CONST CHAR8 *Format, |
| ... |
| ); |
| |
| |
| /** |
| Installs and completes the initialization of a Driver Binding Protocol instance. |
| |
| Installs the Driver Binding Protocol specified by DriverBinding onto the handle |
| specified by DriverBindingHandle. If DriverBindingHandle is NULL, then DriverBinding |
| is installed onto a newly created handle. DriverBindingHandle is typically the same |
| as the driver's ImageHandle, but it can be different if the driver produces multiple |
| Driver Binding Protocols. |
| If DriverBinding is NULL, then ASSERT(). |
| If DriverBinding can not be installed onto a handle, then ASSERT(). |
| |
| @param ImageHandle The image handle of the driver. |
| @param SystemTable The EFI System Table that was passed to the driver's entry point. |
| @param DriverBinding A Driver Binding Protocol instance that this driver is producing. |
| @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this |
| parameter is NULL, then a new handle is created. |
| |
| @retval EFI_SUCCESS The protocol installation completed successfully. |
| @retval EFI_OUT_OF_RESOURCES There was not enough system resources to install the protocol. |
| @retval Others Status from gBS->InstallMultipleProtocolInterfaces(). |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiLibInstallDriverBinding ( |
| IN CONST EFI_HANDLE ImageHandle, |
| IN CONST EFI_SYSTEM_TABLE *SystemTable, |
| IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, |
| IN EFI_HANDLE DriverBindingHandle |
| ); |
| |
| |
| /** |
| Uninstalls a Driver Binding Protocol instance. |
| |
| If DriverBinding is NULL, then ASSERT(). |
| If DriverBinding can not be uninstalled, then ASSERT(). |
| |
| @param DriverBinding A Driver Binding Protocol instance that this driver produced. |
| |
| @retval EFI_SUCCESS The protocol uninstallation successfully completed. |
| @retval Others Status from gBS->UninstallMultipleProtocolInterfaces(). |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiLibUninstallDriverBinding ( |
| IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding |
| ); |
| |
| |
| /** |
| Installs and completes the initialization of a Driver Binding Protocol instance and |
| optionally installs the Component Name, Driver Configuration and Driver Diagnostics Protocols. |
| |
| Initializes a driver by installing the Driver Binding Protocol together with the |
| optional Component Name, optional Driver Configure and optional Driver Diagnostic |
| Protocols onto the driver's DriverBindingHandle. If DriverBindingHandle is NULL, |
| then the protocols are installed onto a newly created handle. DriverBindingHandle |
| is typically the same as the driver's ImageHandle, but it can be different if the |
| driver produces multiple Driver Binding Protocols. |
| If DriverBinding is NULL, then ASSERT(). |
| If the installation fails, then ASSERT(). |
| |
| @param ImageHandle The image handle of the driver. |
| @param SystemTable The EFI System Table that was passed to the driver's entry point. |
| @param DriverBinding A Driver Binding Protocol instance that this driver is producing. |
| @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this |
| parameter is NULL, then a new handle is created. |
| @param ComponentName A Component Name Protocol instance that this driver is producing. |
| @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing. |
| @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing. |
| |
| @retval EFI_SUCCESS The protocol installation completed successfully. |
| @retval EFI_OUT_OF_RESOURCES There was not enough memory in the pool to install all the protocols. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiLibInstallAllDriverProtocols ( |
| IN CONST EFI_HANDLE ImageHandle, |
| IN CONST EFI_SYSTEM_TABLE *SystemTable, |
| IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, |
| IN EFI_HANDLE DriverBindingHandle, |
| IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL |
| IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL |
| IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics OPTIONAL |
| ); |
| |
| |
| /** |
| Uninstalls a Driver Binding Protocol instance and optionally uninstalls the |
| Component Name, Driver Configuration and Driver Diagnostics Protocols. |
| |
| If DriverBinding is NULL, then ASSERT(). |
| If the uninstallation fails, then ASSERT(). |
| |
| @param DriverBinding A Driver Binding Protocol instance that this driver produced. |
| @param ComponentName A Component Name Protocol instance that this driver produced. |
| @param DriverConfiguration A Driver Configuration Protocol instance that this driver produced. |
| @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver produced. |
| |
| @retval EFI_SUCCESS The protocol uninstallation successfully completed. |
| @retval Others Status from gBS->UninstallMultipleProtocolInterfaces(). |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiLibUninstallAllDriverProtocols ( |
| IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, |
| IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL |
| IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL |
| IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics OPTIONAL |
| ); |
| |
| |
| /** |
| Installs Driver Binding Protocol with optional Component Name and Component Name 2 Protocols. |
| |
| Initializes a driver by installing the Driver Binding Protocol together with the |
| optional Component Name and optional Component Name 2 protocols onto the driver's |
| DriverBindingHandle. If DriverBindingHandle is NULL, then the protocols are installed |
| onto a newly created handle. DriverBindingHandle is typically the same as the driver's |
| ImageHandle, but it can be different if the driver produces multiple Driver Binding Protocols. |
| If DriverBinding is NULL, then ASSERT(). |
| If the installation fails, then ASSERT(). |
| |
| @param ImageHandle The image handle of the driver. |
| @param SystemTable The EFI System Table that was passed to the driver's entry point. |
| @param DriverBinding A Driver Binding Protocol instance that this driver is producing. |
| @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this |
| parameter is NULL, then a new handle is created. |
| @param ComponentName A Component Name Protocol instance that this driver is producing. |
| @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing. |
| |
| @retval EFI_SUCCESS The protocol installation completed successfully. |
| @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiLibInstallDriverBindingComponentName2 ( |
| IN CONST EFI_HANDLE ImageHandle, |
| IN CONST EFI_SYSTEM_TABLE *SystemTable, |
| IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, |
| IN EFI_HANDLE DriverBindingHandle, |
| IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL |
| IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL |
| ); |
| |
| |
| /** |
| Uninstalls Driver Binding Protocol with optional Component Name and Component Name 2 Protocols. |
| |
| If DriverBinding is NULL, then ASSERT(). |
| If the uninstallation fails, then ASSERT(). |
| |
| @param DriverBinding A Driver Binding Protocol instance that this driver produced. |
| @param ComponentName A Component Name Protocol instance that this driver produced. |
| @param ComponentName2 A Component Name 2 Protocol instance that this driver produced. |
| |
| @retval EFI_SUCCESS The protocol installation successfully completed. |
| @retval Others Status from gBS->UninstallMultipleProtocolInterfaces(). |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiLibUninstallDriverBindingComponentName2 ( |
| IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, |
| IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL |
| IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL |
| ); |
| |
| |
| /** |
| Installs Driver Binding Protocol with optional Component Name, Component Name 2, Driver |
| Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols. |
| |
| Initializes a driver by installing the Driver Binding Protocol together with the optional |
| Component Name, optional Component Name 2, optional Driver Configuration, optional Driver Configuration 2, |
| optional Driver Diagnostic, and optional Driver Diagnostic 2 Protocols onto the driver's DriverBindingHandle. |
| DriverBindingHandle is typically the same as the driver's ImageHandle, but it can be different if the driver |
| produces multiple Driver Binding Protocols. |
| If DriverBinding is NULL, then ASSERT(). |
| If the installation fails, then ASSERT(). |
| |
| |
| @param ImageHandle The image handle of the driver. |
| @param SystemTable The EFI System Table that was passed to the driver's entry point. |
| @param DriverBinding A Driver Binding Protocol instance that this driver is producing. |
| @param DriverBindingHandle The handle that DriverBinding is to be installed onto. If this |
| parameter is NULL, then a new handle is created. |
| @param ComponentName A Component Name Protocol instance that this driver is producing. |
| @param ComponentName2 A Component Name 2 Protocol instance that this driver is producing. |
| @param DriverConfiguration A Driver Configuration Protocol instance that this driver is producing. |
| @param DriverConfiguration2 A Driver Configuration Protocol 2 instance that this driver is producing. |
| @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver is producing. |
| @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver is producing. |
| |
| @retval EFI_SUCCESS The protocol installation completed successfully. |
| @retval EFI_OUT_OF_RESOURCES There was not enough memory in pool to install all the protocols. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiLibInstallAllDriverProtocols2 ( |
| IN CONST EFI_HANDLE ImageHandle, |
| IN CONST EFI_SYSTEM_TABLE *SystemTable, |
| IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, |
| IN EFI_HANDLE DriverBindingHandle, |
| IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL |
| IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2, OPTIONAL |
| IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL |
| IN CONST EFI_DRIVER_CONFIGURATION2_PROTOCOL *DriverConfiguration2, OPTIONAL |
| IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics, OPTIONAL |
| IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *DriverDiagnostics2 OPTIONAL |
| ); |
| |
| |
| /** |
| Uninstalls Driver Binding Protocol with optional Component Name, Component Name 2, Driver |
| Configuration, Driver Configuration 2, Driver Diagnostics, and Driver Diagnostics 2 Protocols. |
| |
| If DriverBinding is NULL, then ASSERT(). |
| If the installation fails, then ASSERT(). |
| |
| |
| @param DriverBinding A Driver Binding Protocol instance that this driver produced. |
| @param ComponentName A Component Name Protocol instance that this driver produced. |
| @param ComponentName2 A Component Name 2 Protocol instance that this driver produced. |
| @param DriverConfiguration A Driver Configuration Protocol instance that this driver produced. |
| @param DriverConfiguration2 A Driver Configuration Protocol 2 instance that this driver produced. |
| @param DriverDiagnostics A Driver Diagnostics Protocol instance that this driver produced. |
| @param DriverDiagnostics2 A Driver Diagnostics Protocol 2 instance that this driver produced. |
| |
| @retval EFI_SUCCESS The protocol uninstallation successfully completed. |
| @retval Others Status from gBS->UninstallMultipleProtocolInterfaces(). |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiLibUninstallAllDriverProtocols2 ( |
| IN EFI_DRIVER_BINDING_PROTOCOL *DriverBinding, |
| IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName, OPTIONAL |
| IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2, OPTIONAL |
| IN CONST EFI_DRIVER_CONFIGURATION_PROTOCOL *DriverConfiguration, OPTIONAL |
| IN CONST EFI_DRIVER_CONFIGURATION2_PROTOCOL *DriverConfiguration2, OPTIONAL |
| IN CONST EFI_DRIVER_DIAGNOSTICS_PROTOCOL *DriverDiagnostics, OPTIONAL |
| IN CONST EFI_DRIVER_DIAGNOSTICS2_PROTOCOL *DriverDiagnostics2 OPTIONAL |
| ); |
| |
| |
| /** |
| Appends a formatted Unicode string to a Null-terminated Unicode string |
| |
| This function appends a formatted Unicode string to the Null-terminated |
| Unicode string specified by String. String is optional and may be NULL. |
| Storage for the formatted Unicode string returned is allocated using |
| AllocatePool(). The pointer to the appended string is returned. The caller |
| is responsible for freeing the returned string. |
| |
| If String is not NULL and not aligned on a 16-bit boundary, then ASSERT(). |
| If FormatString is NULL, then ASSERT(). |
| If FormatString is not aligned on a 16-bit boundary, then ASSERT(). |
| |
| @param[in] String A Null-terminated Unicode string. |
| @param[in] FormatString A Null-terminated Unicode format string. |
| @param[in] Marker VA_LIST marker for the variable argument list. |
| |
| @retval NULL There was not enough available memory. |
| @return Null-terminated Unicode string is that is the formatted |
| string appended to String. |
| **/ |
| CHAR16* |
| EFIAPI |
| CatVSPrint ( |
| IN CHAR16 *String, OPTIONAL |
| IN CONST CHAR16 *FormatString, |
| IN VA_LIST Marker |
| ); |
| |
| /** |
| Appends a formatted Unicode string to a Null-terminated Unicode string |
| |
| This function appends a formatted Unicode string to the Null-terminated |
| Unicode string specified by String. String is optional and may be NULL. |
| Storage for the formatted Unicode string returned is allocated using |
| AllocatePool(). The pointer to the appended string is returned. The caller |
| is responsible for freeing the returned string. |
| |
| If String is not NULL and not aligned on a 16-bit boundary, then ASSERT(). |
| If FormatString is NULL, then ASSERT(). |
| If FormatString is not aligned on a 16-bit boundary, then ASSERT(). |
| |
| @param[in] String A Null-terminated Unicode string. |
| @param[in] FormatString A Null-terminated Unicode format string. |
| @param[in] ... The variable argument list whose contents are |
| accessed based on the format string specified by |
| FormatString. |
| |
| @retval NULL There was not enough available memory. |
| @return Null-terminated Unicode string is that is the formatted |
| string appended to String. |
| **/ |
| CHAR16 * |
| EFIAPI |
| CatSPrint ( |
| IN CHAR16 *String, OPTIONAL |
| IN CONST CHAR16 *FormatString, |
| ... |
| ); |
| |
| /** |
| Returns an array of protocol instance that matches the given protocol. |
| |
| @param[in] Protocol Provides the protocol to search for. |
| @param[out] NoProtocols The number of protocols returned in Buffer. |
| @param[out] Buffer A pointer to the buffer to return the requested |
| array of protocol instances that match Protocol. |
| The returned buffer is allocated using |
| EFI_BOOT_SERVICES.AllocatePool(). The caller is |
| responsible for freeing this buffer with |
| EFI_BOOT_SERVICES.FreePool(). |
| |
| @retval EFI_SUCCESS The array of protocols was returned in Buffer, |
| and the number of protocols in Buffer was |
| returned in NoProtocols. |
| @retval EFI_NOT_FOUND No protocols found. |
| @retval EFI_OUT_OF_RESOURCES There is not enough pool memory to store the |
| matching results. |
| @retval EFI_INVALID_PARAMETER Protocol is NULL. |
| @retval EFI_INVALID_PARAMETER NoProtocols is NULL. |
| @retval EFI_INVALID_PARAMETER Buffer is NULL. |
| |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiLocateProtocolBuffer ( |
| IN EFI_GUID *Protocol, |
| OUT UINTN *NoProtocols, |
| OUT VOID ***Buffer |
| ); |
| |
| /** |
| Open or create a file or directory, possibly creating the chain of |
| directories leading up to the directory. |
| |
| EfiOpenFileByDevicePath() first locates EFI_SIMPLE_FILE_SYSTEM_PROTOCOL on |
| FilePath, and opens the root directory of that filesystem with |
| EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume(). |
| |
| On the remaining device path, the longest initial sequence of |
| FILEPATH_DEVICE_PATH nodes is node-wise traversed with |
| EFI_FILE_PROTOCOL.Open(). |
| |
| (As a consequence, if OpenMode includes EFI_FILE_MODE_CREATE, and Attributes |
| includes EFI_FILE_DIRECTORY, and each FILEPATH_DEVICE_PATH specifies a single |
| pathname component, then EfiOpenFileByDevicePath() ensures that the specified |
| series of subdirectories exist on return.) |
| |
| The EFI_FILE_PROTOCOL identified by the last FILEPATH_DEVICE_PATH node is |
| output to the caller; intermediate EFI_FILE_PROTOCOL instances are closed. If |
| there are no FILEPATH_DEVICE_PATH nodes past the node that identifies the |
| filesystem, then the EFI_FILE_PROTOCOL of the root directory of the |
| filesystem is output to the caller. If a device path node that is different |
| from FILEPATH_DEVICE_PATH is encountered relative to the filesystem, the |
| traversal is stopped with an error, and a NULL EFI_FILE_PROTOCOL is output. |
| |
| @param[in,out] FilePath On input, the device path to the file or directory |
| to open or create. The caller is responsible for |
| ensuring that the device path pointed-to by FilePath |
| is well-formed. On output, FilePath points one past |
| the last node in the original device path that has |
| been successfully processed. FilePath is set on |
| output even if EfiOpenFileByDevicePath() returns an |
| error. |
| |
| @param[out] File On error, File is set to NULL. On success, File is |
| set to the EFI_FILE_PROTOCOL of the root directory |
| of the filesystem, if there are no |
| FILEPATH_DEVICE_PATH nodes in FilePath; otherwise, |
| File is set to the EFI_FILE_PROTOCOL identified by |
| the last node in FilePath. |
| |
| @param[in] OpenMode The OpenMode parameter to pass to |
| EFI_FILE_PROTOCOL.Open(). |
| |
| @param[in] Attributes The Attributes parameter to pass to |
| EFI_FILE_PROTOCOL.Open(). |
| |
| @retval EFI_SUCCESS The file or directory has been opened or |
| created. |
| |
| @retval EFI_INVALID_PARAMETER FilePath is NULL; or File is NULL; or FilePath |
| contains a device path node, past the node |
| that identifies |
| EFI_SIMPLE_FILE_SYSTEM_PROTOCOL, that is not a |
| FILEPATH_DEVICE_PATH node. |
| |
| @retval EFI_OUT_OF_RESOURCES Memory allocation failed. |
| |
| @return Error codes propagated from the |
| LocateDevicePath() and OpenProtocol() boot |
| services, and from the |
| EFI_SIMPLE_FILE_SYSTEM_PROTOCOL.OpenVolume() |
| and EFI_FILE_PROTOCOL.Open() member functions. |
| **/ |
| EFI_STATUS |
| EFIAPI |
| EfiOpenFileByDevicePath ( |
| IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath, |
| OUT EFI_FILE_PROTOCOL **File, |
| IN UINT64 OpenMode, |
| IN UINT64 Attributes |
| ); |
| |
| /** |
| This function locates next ACPI table in XSDT/RSDT based on Signature and |
| previous returned Table. |
| |
| If PreviousTable is NULL: |
| This function will locate the first ACPI table in XSDT/RSDT based on |
| Signature in gEfiAcpi20TableGuid system configuration table first, and then |
| gEfiAcpi10TableGuid system configuration table. |
| This function will locate in XSDT first, and then RSDT. |
| For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in |
| FADT. |
| For FACS, this function will locate XFirmwareCtrl in FADT first, and then |
| FirmwareCtrl in FADT. |
| |
| If PreviousTable is not NULL: |
| 1. If it could be located in XSDT in gEfiAcpi20TableGuid system configuration |
| table, then this function will just locate next table in XSDT in |
| gEfiAcpi20TableGuid system configuration table. |
| 2. If it could be located in RSDT in gEfiAcpi20TableGuid system configuration |
| table, then this function will just locate next table in RSDT in |
| gEfiAcpi20TableGuid system configuration table. |
| 3. If it could be located in RSDT in gEfiAcpi10TableGuid system configuration |
| table, then this function will just locate next table in RSDT in |
| gEfiAcpi10TableGuid system configuration table. |
| |
| It's not supported that PreviousTable is not NULL but PreviousTable->Signature |
| is not same with Signature, NULL will be returned. |
| |
| @param Signature ACPI table signature. |
| @param PreviousTable Pointer to previous returned table to locate next |
| table, or NULL to locate first table. |
| |
| @return Next ACPI table or NULL if not found. |
| |
| **/ |
| EFI_ACPI_COMMON_HEADER * |
| EFIAPI |
| EfiLocateNextAcpiTable ( |
| IN UINT32 Signature, |
| IN EFI_ACPI_COMMON_HEADER *PreviousTable OPTIONAL |
| ); |
| |
| /** |
| This function locates first ACPI table in XSDT/RSDT based on Signature. |
| |
| This function will locate the first ACPI table in XSDT/RSDT based on |
| Signature in gEfiAcpi20TableGuid system configuration table first, and then |
| gEfiAcpi10TableGuid system configuration table. |
| This function will locate in XSDT first, and then RSDT. |
| For DSDT, this function will locate XDsdt in FADT first, and then Dsdt in |
| FADT. |
| For FACS, this function will locate XFirmwareCtrl in FADT first, and then |
| FirmwareCtrl in FADT. |
| |
| @param Signature ACPI table signature. |
| |
| @return First ACPI table or NULL if not found. |
| |
| **/ |
| EFI_ACPI_COMMON_HEADER * |
| EFIAPI |
| EfiLocateFirstAcpiTable ( |
| IN UINT32 Signature |
| ); |
| |
| #endif |