X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=IntelFrameworkModulePkg%2FInclude%2FLibrary%2FGenericBdsLib.h;fp=IntelFrameworkModulePkg%2FInclude%2FLibrary%2FGenericBdsLib.h;h=0000000000000000000000000000000000000000;hb=aa7fc1c11c3d57d82842dbede50d064639671a98;hp=c0a4c8a804a60889565c668455710de93fb1a547;hpb=4286eb22f4aec33b90574b998a31f8bd34dd4f47;p=mirror_edk2.git
diff --git a/IntelFrameworkModulePkg/Include/Library/GenericBdsLib.h b/IntelFrameworkModulePkg/Include/Library/GenericBdsLib.h
deleted file mode 100644
index c0a4c8a804..0000000000
--- a/IntelFrameworkModulePkg/Include/Library/GenericBdsLib.h
+++ /dev/null
@@ -1,1108 +0,0 @@
-/** @file
- Generic BDS library defines general interfaces for a BDS driver, including:
- 1) BDS boot policy interface.
- 2) BDS boot device connect interface.
- 3) BDS Misc interfaces for mainting boot variable, ouput string.
-
-Copyright (c) 2004 - 2018, Intel Corporation. All rights reserved.
-SPDX-License-Identifier: BSD-2-Clause-Patent
-
-**/
-
-#ifndef _GENERIC_BDS_LIB_H_
-#define _GENERIC_BDS_LIB_H_
-
-#include
-
-///
-/// Constants which are variable names used to access variables.
-///
-#define VAR_LEGACY_DEV_ORDER L"LegacyDevOrder"
-
-///
-/// Data structures and defines.
-///
-#define FRONT_PAGE_QUESTION_ID 0x0000
-#define FRONT_PAGE_DATA_WIDTH 0x01
-
-///
-/// ConnectType
-///
-#define CONSOLE_OUT 0x00000001
-#define STD_ERROR 0x00000002
-#define CONSOLE_IN 0x00000004
-#define CONSOLE_ALL (CONSOLE_OUT | CONSOLE_IN | STD_ERROR)
-
-///
-/// Load Option Attributes
-///
-#define LOAD_OPTION_ACTIVE 0x00000001
-#define LOAD_OPTION_FORCE_RECONNECT 0x00000002
-
-#define LOAD_OPTION_HIDDEN 0x00000008
-#define LOAD_OPTION_CATEGORY 0x00001F00
-
-#define LOAD_OPTION_CATEGORY_BOOT 0x00000000
-#define LOAD_OPTION_CATEGORY_APP 0x00000100
-
-#define EFI_BOOT_OPTION_SUPPORT_KEY 0x00000001
-#define EFI_BOOT_OPTION_SUPPORT_APP 0x00000002
-
-#define IS_LOAD_OPTION_TYPE(_c, _Mask) (BOOLEAN) (((_c) & (_Mask)) != 0)
-
-///
-/// Define the maximum characters that will be accepted.
-///
-#define MAX_CHAR 480
-#define MAX_CHAR_SIZE (MAX_CHAR * 2)
-
-///
-/// Define maximum characters for boot option variable "BootXXXX".
-///
-#define BOOT_OPTION_MAX_CHAR 10
-
-//
-// This data structure is the part of BDS_CONNECT_ENTRY
-//
-#define BDS_LOAD_OPTION_SIGNATURE SIGNATURE_32 ('B', 'd', 'C', 'O')
-
-typedef struct {
-
- UINTN Signature;
- LIST_ENTRY Link;
-
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
-
- CHAR16 *OptionName;
- UINTN OptionNumber;
- UINT16 BootCurrent;
- UINT32 Attribute;
- CHAR16 *Description;
- VOID *LoadOptions;
- UINT32 LoadOptionsSize;
- CHAR16 *StatusString;
-
-} BDS_COMMON_OPTION;
-
-typedef struct {
- EFI_DEVICE_PATH_PROTOCOL *DevicePath;
- UINTN ConnectType;
-} BDS_CONSOLE_CONNECT_ENTRY;
-
-//
-// Bds boot related lib functions
-//
-/**
- Boot from the UEFI spec defined "BootNext" variable.
-
-**/
-VOID
-EFIAPI
-BdsLibBootNext (
- VOID
- );
-
-/**
- Process the boot option according to the UEFI specification. The legacy boot option device path includes BBS_DEVICE_PATH.
-
- @param Option The boot option to be processed.
- @param DevicePath The device path describing where to load the
- boot image or the legcy BBS device path to boot
- the legacy OS.
- @param ExitDataSize The size of exit data.
- @param ExitData Data returned when Boot image failed.
-
- @retval EFI_SUCCESS Boot from the input boot option succeeded.
- @retval EFI_NOT_FOUND The Device Path is not found in the system.
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibBootViaBootOption (
- IN BDS_COMMON_OPTION * Option,
- IN EFI_DEVICE_PATH_PROTOCOL * DevicePath,
- OUT UINTN *ExitDataSize,
- OUT CHAR16 **ExitData OPTIONAL
- );
-
-
-/**
- This function will enumerate all possible boot devices in the system, and
- automatically create boot options for Network, Shell, Removable BlockIo,
- and Non-BlockIo Simplefile devices.
-
- BDS separates EFI boot options into six types:
- 1. Network - The boot option points to the SimpleNetworkProtocol device.
- Bds will try to automatically create this type of boot option during enumeration.
- 2. Shell - The boot option points to internal flash shell.
- Bds will try to automatically create this type of boot option during enumeration.
- 3. Removable BlockIo - The boot option points to a removable media
- device, such as a USB flash drive or DVD drive.
- These devices should contain a *removable* blockIo
- protocol in their device handle.
- Bds will try to automatically create this type boot option
- when enumerate.
- 4. Fixed BlockIo - The boot option points to a Fixed blockIo device,
- such as a hard disk.
- These devices should contain a *fixed* blockIo
- protocol in their device handle.
- BDS will skip fixed blockIo devices, and not
- automatically create boot option for them. But BDS
- will help to delete those fixed blockIo boot options,
- whose description rules conflict with other auto-created
- boot options.
- 5. Non-BlockIo Simplefile - The boot option points to a device whose handle
- has SimpleFileSystem Protocol, but has no blockio
- protocol. These devices do not offer blockIo
- protocol, but BDS still can get the
- \EFI\BOOT\boot{machinename}.EFI by SimpleFileSystem
- Protocol.
- 6. File - The boot option points to a file. These boot options are usually
- created by the user, either manually or with an OS loader. BDS will not delete or modify
- these boot options.
-
- This function will enumerate all possible boot devices in the system, and
- automatically create boot options for Network, Shell, Removable BlockIo,
- and Non-BlockIo Simplefile devices.
- It will execute once every boot.
-
- @param BdsBootOptionList The header of the linked list that indexed all
- current boot options.
-
- @retval EFI_SUCCESS Finished all the boot device enumerations and
- created the boot option based on the boot device.
-
- @retval EFI_OUT_OF_RESOURCES Failed to enumerate the boot device and create
- the boot option list.
-**/
-EFI_STATUS
-EFIAPI
-BdsLibEnumerateAllBootOption (
- IN OUT LIST_ENTRY *BdsBootOptionList
- );
-
-/**
- Build the boot option with the handle parsed in.
-
- @param Handle The handle representing the device path for which
- to create a boot option.
- @param BdsBootOptionList The header of the link list that indexed all
- current boot options.
- @param String The description of the boot option.
-
-**/
-VOID
-EFIAPI
-BdsLibBuildOptionFromHandle (
- IN EFI_HANDLE Handle,
- IN LIST_ENTRY *BdsBootOptionList,
- IN CHAR16 *String
- );
-
-
-/**
- Build the on flash shell boot option with the handle parsed in.
-
- @param Handle The handle which present the device path to create
- the on flash shell boot option.
- @param BdsBootOptionList The header of the link list that indexed all
- current boot options.
-
-**/
-VOID
-EFIAPI
-BdsLibBuildOptionFromShell (
- IN EFI_HANDLE Handle,
- IN OUT LIST_ENTRY *BdsBootOptionList
- );
-
-//
-// Bds misc lib functions
-//
-/**
- Get boot mode by looking up the configuration table and parsing the HOB list.
-
- @param BootMode The boot mode from PEI handoff HOB.
-
- @retval EFI_SUCCESS Successfully got boot mode.
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibGetBootMode (
- OUT EFI_BOOT_MODE *BootMode
- );
-
-
-/**
- The function will go through the driver option link list, and then load and start
- every driver to which the driver option device path points.
-
- @param BdsDriverLists The header of the current driver option link list.
-
-**/
-VOID
-EFIAPI
-BdsLibLoadDrivers (
- IN LIST_ENTRY *BdsDriverLists
- );
-
-
-/**
- This function processes BootOrder or DriverOrder variables, by calling
-
- BdsLibVariableToOption () for each UINT16 in the variables.
-
- @param BdsCommonOptionList The header of the option list base on the variable
- VariableName.
- @param VariableName An EFI Variable name indicate the BootOrder or
- DriverOrder.
-
- @retval EFI_SUCCESS Successfully created the boot option or driver option
- list.
- @retval EFI_OUT_OF_RESOURCES Failed to get the boot option or the driver option list.
-**/
-EFI_STATUS
-EFIAPI
-BdsLibBuildOptionFromVar (
- IN LIST_ENTRY *BdsCommonOptionList,
- IN CHAR16 *VariableName
- );
-
-/**
- This function reads the EFI variable (VendorGuid/Name) and returns a dynamically allocated
- buffer and the size of the buffer. If it fails, return NULL.
-
- @param Name The string part of the EFI variable name.
- @param VendorGuid The GUID part of the EFI variable name.
- @param VariableSize Returns the size of the EFI variable that was read.
-
- @return Dynamically allocated memory that contains a copy
- of the EFI variable. The caller is responsible for
- freeing the buffer.
- @retval NULL The variable was not read.
-
-**/
-VOID *
-EFIAPI
-BdsLibGetVariableAndSize (
- IN CHAR16 *Name,
- IN EFI_GUID *VendorGuid,
- OUT UINTN *VariableSize
- );
-
-
-/**
- This function prints a series of strings.
-
- @param ConOut A pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL.
- @param ... A variable argument list containing a series of
- strings, the last string must be NULL.
-
- @retval EFI_SUCCESS Successfully printed out the string using ConOut.
- @retval EFI_STATUS Return the status of the ConOut->OutputString ().
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibOutputStrings (
- IN EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *ConOut,
- ...
- );
-
-/**
- Build the boot#### or driver#### option from the VariableName. The
- build boot#### or driver#### will also be linked to BdsCommonOptionList.
-
- @param BdsCommonOptionList The header of the boot#### or driver#### option
- link list.
- @param VariableName EFI Variable name, indicates if it is boot#### or
- driver####.
-
- @retval BDS_COMMON_OPTION The option that was created.
- @retval NULL Failed to get the new option.
-
-**/
-BDS_COMMON_OPTION *
-EFIAPI
-BdsLibVariableToOption (
- IN OUT LIST_ENTRY *BdsCommonOptionList,
- IN CHAR16 *VariableName
- );
-
-/**
- This function registers the new boot#### or driver#### option based on
- the VariableName. The new registered boot#### or driver#### will be linked
- to BdsOptionList and also update to the VariableName. After the boot#### or
- driver#### updated, the BootOrder or DriverOrder will also be updated.
-
- @param BdsOptionList The header of the boot#### or driver#### link list.
- @param DevicePath The device path that the boot#### or driver####
- option present.
- @param String The description of the boot#### or driver####.
- @param VariableName Indicate if the boot#### or driver#### option.
-
- @retval EFI_SUCCESS The boot#### or driver#### have been successfully
- registered.
- @retval EFI_STATUS Return the status of gRT->SetVariable ().
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibRegisterNewOption (
- IN LIST_ENTRY *BdsOptionList,
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath,
- IN CHAR16 *String,
- IN CHAR16 *VariableName
- );
-
-//
-// Bds connect and disconnect driver lib funcions
-//
-/**
- This function connects all system drivers with the corresponding controllers.
-
-**/
-VOID
-EFIAPI
-BdsLibConnectAllDriversToAllControllers (
- VOID
- );
-
-/**
- This function connects all system drivers to controllers.
-
-**/
-VOID
-EFIAPI
-BdsLibConnectAll (
- VOID
- );
-
-/**
- This function will create all handles associate with every device
- path node. If the handle associate with one device path node can not
- be created successfully, then still give chance to do the dispatch,
- which load the missing drivers if possible.
-
- @param DevicePathToConnect The device path to be connected. Can be
- a multi-instance device path.
-
- @retval EFI_SUCCESS All handles associates with every device path node
- were created.
- @retval EFI_OUT_OF_RESOURCES Not enough resources to create new handles.
- @retval EFI_NOT_FOUND At least one handle could not be created.
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibConnectDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePathToConnect
- );
-
-/**
- This function will connect all current system handles recursively.
- gBS->ConnectController() service is invoked for each handle exist in system handler buffer.
- If the handle is bus type handler, all childrens also will be connected recursively by gBS->ConnectController().
-
- @retval EFI_SUCCESS All handles and child handles have been
- connected.
- @retval EFI_STATUS Return the status of gBS->LocateHandleBuffer().
-**/
-EFI_STATUS
-EFIAPI
-BdsLibConnectAllEfi (
- VOID
- );
-
-/**
- This function will disconnect all current system handles.
- gBS->DisconnectController() is invoked for each handle exists in system handle buffer.
- If handle is a bus type handle, all childrens also are disconnected recursively by gBS->DisconnectController().
-
- @retval EFI_SUCCESS All handles have been disconnected.
- @retval EFI_STATUS Error status returned by of gBS->LocateHandleBuffer().
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibDisconnectAllEfi (
- VOID
- );
-
-//
-// Bds console related lib functions
-//
-/**
- This function will search every simpletxt device in the current system,
- and make every simpletxt device a potential console device.
-
-**/
-VOID
-EFIAPI
-BdsLibConnectAllConsoles (
- VOID
- );
-
-
-/**
- This function will connect console device based on the console
- device variable ConIn, ConOut and ErrOut.
-
- @retval EFI_SUCCESS At least one of the ConIn and ConOut devices have
- been connected.
- @retval EFI_STATUS Return the status of BdsLibConnectConsoleVariable ().
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibConnectAllDefaultConsoles (
- VOID
- );
-
-
-/**
- This function will connect console device except ConIn base on the console
- device variable ConOut and ErrOut.
-
- @retval EFI_SUCCESS At least one of the ConOut device have
- been connected success.
- @retval EFI_STATUS Return the status of BdsLibConnectConsoleVariable ().
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibConnectAllDefaultConsolesWithOutConIn (
- VOID
- );
-
-
-/**
- This function updates the console variable based on ConVarName. It can
- add or remove one specific console device path from the variable
-
- @param ConVarName The console-related variable name: ConIn, ConOut,
- ErrOut.
- @param CustomizedConDevicePath The console device path to be added to
- the console variable ConVarName. Cannot be multi-instance.
- @param ExclusiveDevicePath The console device path to be removed
- from the console variable ConVarName. Cannot be multi-instance.
-
- @retval EFI_UNSUPPORTED The added device path is the same as a removed one.
- @retval EFI_SUCCESS Successfully added or removed the device path from the
- console variable.
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibUpdateConsoleVariable (
- IN CHAR16 *ConVarName,
- IN EFI_DEVICE_PATH_PROTOCOL *CustomizedConDevicePath,
- IN EFI_DEVICE_PATH_PROTOCOL *ExclusiveDevicePath
- );
-
-/**
- Connect the console device base on the variable ConVarName, if
- device path of the ConVarName is multi-instance device path and
- anyone of the instances is connected success, then this function
- will return success.
- If the handle associate with one device path node can not
- be created successfully, then still give chance to do the dispatch,
- which load the missing drivers if possible.
-
- @param ConVarName Console related variable name, ConIn, ConOut,
- ErrOut.
-
- @retval EFI_NOT_FOUND There is not any console devices connected
- success
- @retval EFI_SUCCESS Success connect any one instance of the console
- device path base on the variable ConVarName.
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibConnectConsoleVariable (
- IN CHAR16 *ConVarName
- );
-
-//
-// Bds device path related lib functions
-//
-/**
- Delete the instance in Multi that overlaps with Single.
-
- @param Multi A pointer to a multi-instance device path data
- structure.
- @param Single A pointer to a single-instance device path data
- structure.
-
- @return This function removes the device path instances in Multi that overlap
- Single, and returns the resulting device path. If there is no
- remaining device path as a result, this function will return NULL.
-
-**/
-EFI_DEVICE_PATH_PROTOCOL *
-EFIAPI
-BdsLibDelPartMatchInstance (
- IN EFI_DEVICE_PATH_PROTOCOL *Multi,
- IN EFI_DEVICE_PATH_PROTOCOL *Single
- );
-
-/**
- This function compares a device path data structure to that of all the nodes of a
- second device path instance.
-
- @param Multi A pointer to a multi-instance device path data
- structure.
- @param Single A pointer to a single-instance device path data
- structure.
-
- @retval TRUE If the Single device path is contained within a
- Multi device path.
- @retval FALSE The Single device path is not contained within a
- Multi device path.
-
-**/
-BOOLEAN
-EFIAPI
-BdsLibMatchDevicePaths (
- IN EFI_DEVICE_PATH_PROTOCOL *Multi,
- IN EFI_DEVICE_PATH_PROTOCOL *Single
- );
-
-/**
- This function converts an input device structure to a Unicode string.
-
- @param DevPath A pointer to the device path structure.
-
- @return A newly allocated Unicode string that represents the device path.
-
-**/
-CHAR16 *
-EFIAPI
-DevicePathToStr (
- IN EFI_DEVICE_PATH_PROTOCOL *DevPath
- );
-
-//
-// Internal definitions
-//
-typedef struct {
- CHAR16 *Str;
- UINTN Len;
- UINTN Maxlen;
-} POOL_PRINT;
-
-typedef
-VOID
-(*DEV_PATH_FUNCTION) (
- IN OUT POOL_PRINT *Str,
- IN VOID *DevPath
- );
-
-typedef struct {
- UINT8 Type;
- UINT8 SubType;
- DEV_PATH_FUNCTION Function;
-} DEVICE_PATH_STRING_TABLE;
-
-typedef struct {
- EFI_DEVICE_PATH_PROTOCOL Header;
- EFI_GUID Guid;
- UINT8 VendorDefinedData[1];
-} VENDOR_DEVICE_PATH_WITH_DATA;
-
-typedef struct {
- EFI_DEVICE_PATH_PROTOCOL Header;
- UINT16 NetworkProtocol;
- UINT16 LoginOption;
- UINT64 Lun;
- UINT16 TargetPortalGroupTag;
- CHAR16 TargetName[1];
-} ISCSI_DEVICE_PATH_WITH_NAME;
-
-//
-// BBS support macros and functions
-//
-
-#if defined(MDE_CPU_IA32) || defined(MDE_CPU_X64)
-#define REFRESH_LEGACY_BOOT_OPTIONS \
- BdsDeleteAllInvalidLegacyBootOptions ();\
- BdsAddNonExistingLegacyBootOptions (); \
- BdsUpdateLegacyDevOrder ()
-#else
-#define REFRESH_LEGACY_BOOT_OPTIONS
-#endif
-
-/**
- Delete all the invalid legacy boot options.
-
- @retval EFI_SUCCESS All invalid legacy boot options are deleted.
- @retval EFI_OUT_OF_RESOURCES Failed to allocate necessary memory.
- @retval EFI_NOT_FOUND Failed to retrieve variable of boot order.
-
-**/
-EFI_STATUS
-EFIAPI
-BdsDeleteAllInvalidLegacyBootOptions (
- VOID
- );
-
-/**
- Add the legacy boot options from BBS table if they do not exist.
-
- @retval EFI_SUCCESS The boot options were added successfully,
- or they are already in boot options.
- @retval EFI_NOT_FOUND No legacy boot options is found.
- @retval EFI_OUT_OF_RESOURCE No enough memory.
- @return Other value LegacyBoot options are not added.
-**/
-EFI_STATUS
-EFIAPI
-BdsAddNonExistingLegacyBootOptions (
- VOID
- );
-
-/**
- Add the legacy boot devices from BBS table into
- the legacy device boot order.
-
- @retval EFI_SUCCESS The boot devices were added successfully.
- @retval EFI_NOT_FOUND The legacy boot devices are not found.
- @retval EFI_OUT_OF_RESOURCES Memory or storage is not enough.
- @retval EFI_DEVICE_ERROR Failed to add the legacy device boot order into EFI variable
- because of a hardware error.
-**/
-EFI_STATUS
-EFIAPI
-BdsUpdateLegacyDevOrder (
- VOID
- );
-
-/**
- Refresh the boot priority for BBS entries based on boot option entry and boot order.
-
- @param Entry The boot option is to be checked for a refreshed BBS table.
-
- @retval EFI_SUCCESS The boot priority for BBS entries refreshed successfully.
- @retval EFI_NOT_FOUND BBS entries can't be found.
- @retval EFI_OUT_OF_RESOURCES Failed to get the legacy device boot order.
-**/
-EFI_STATUS
-EFIAPI
-BdsRefreshBbsTableForBoot (
- IN BDS_COMMON_OPTION *Entry
- );
-
-/**
- Delete the Boot Option from EFI Variable. The Boot Order Arrray
- is also updated.
-
- @param OptionNumber The number of Boot options wanting to be deleted.
- @param BootOrder The Boot Order array.
- @param BootOrderSize The size of the Boot Order Array.
-
- @retval EFI_SUCCESS The Boot Option Variable was found and removed.
- @retval EFI_UNSUPPORTED The Boot Option Variable store was inaccessible.
- @retval EFI_NOT_FOUND The Boot Option Variable was not found.
-**/
-EFI_STATUS
-EFIAPI
-BdsDeleteBootOption (
- IN UINTN OptionNumber,
- IN OUT UINT16 *BootOrder,
- IN OUT UINTN *BootOrderSize
- );
-
-//
-//The interface functions related to the Setup Browser Reset Reminder feature
-//
-/**
- Enable the setup browser reset reminder feature.
- This routine is used in a platform tip. If the platform policy needs the feature, use the routine to enable it.
-
-**/
-VOID
-EFIAPI
-EnableResetReminderFeature (
- VOID
- );
-
-/**
- Disable the setup browser reset reminder feature.
- This routine is used in a platform tip. If the platform policy does not want the feature, use the routine to disable it.
-
-**/
-VOID
-EFIAPI
-DisableResetReminderFeature (
- VOID
- );
-
-/**
- Record the info that a reset is required.
- A module boolean variable is used to record whether a reset is required.
-
-**/
-VOID
-EFIAPI
-EnableResetRequired (
- VOID
- );
-
-
-/**
- Record the info that no reset is required.
- A module boolean variable is used to record whether a reset is required.
-
-**/
-VOID
-EFIAPI
-DisableResetRequired (
- VOID
- );
-
-/**
- Check whether platform policy enables the reset reminder feature. The default is enabled.
-
-**/
-BOOLEAN
-EFIAPI
-IsResetReminderFeatureEnable (
- VOID
- );
-
-/**
- Check if the user changed any option setting that needs a system reset to be effective.
-
-**/
-BOOLEAN
-EFIAPI
-IsResetRequired (
- VOID
- );
-
-/**
- Check whether a reset is needed, and finish the reset reminder feature.
- If a reset is needed, pop up a menu to notice user, and finish the feature
- according to the user selection.
-
-**/
-VOID
-EFIAPI
-SetupResetReminder (
- VOID
- );
-
-
-///
-/// Define the boot type with which to classify the boot option type.
-/// Different boot option types could have different boot behaviors.
-/// Use their device path node (Type + SubType) as the type value.
-/// The boot type here can be added according to requirements.
-///
-
-///
-/// ACPI boot type. For ACPI devices, using sub-types to distinguish devices is not allowed, so hardcode their values.
-///
-#define BDS_EFI_ACPI_FLOPPY_BOOT 0x0201
-///
-/// Message boot type
-/// If a device path of boot option only points to a message node, the boot option is a message boot type.
-///
-#define BDS_EFI_MESSAGE_ATAPI_BOOT 0x0301 // Type 03; Sub-Type 01
-#define BDS_EFI_MESSAGE_SCSI_BOOT 0x0302 // Type 03; Sub-Type 02
-#define BDS_EFI_MESSAGE_USB_DEVICE_BOOT 0x0305 // Type 03; Sub-Type 05
-#define BDS_EFI_MESSAGE_SATA_BOOT 0x0312 // Type 03; Sub-Type 18
-#define BDS_EFI_MESSAGE_MAC_BOOT 0x030b // Type 03; Sub-Type 11
-#define BDS_EFI_MESSAGE_MISC_BOOT 0x03FF
-
-///
-/// Media boot type
-/// If a device path of boot option contains a media node, the boot option is media boot type.
-///
-#define BDS_EFI_MEDIA_HD_BOOT 0x0401 // Type 04; Sub-Type 01
-#define BDS_EFI_MEDIA_CDROM_BOOT 0x0402 // Type 04; Sub-Type 02
-///
-/// BBS boot type
-/// If a device path of boot option contains a BBS node, the boot option is BBS boot type.
-///
-#define BDS_LEGACY_BBS_BOOT 0x0501 // Type 05; Sub-Type 01
-
-#define BDS_EFI_UNSUPPORT 0xFFFF
-
-/**
- Check whether an instance in BlockIoDevicePath has the same partition node as the HardDriveDevicePath device path.
-
- @param BlockIoDevicePath Multi device path instances to check.
- @param HardDriveDevicePath A device path starting with a hard drive media
- device path.
-
- @retval TRUE There is a matched device path instance.
- @retval FALSE There is no matched device path instance.
-
-**/
-BOOLEAN
-EFIAPI
-MatchPartitionDevicePathNode (
- IN EFI_DEVICE_PATH_PROTOCOL *BlockIoDevicePath,
- IN HARDDRIVE_DEVICE_PATH *HardDriveDevicePath
- );
-
-
-/**
- Expand a device path that starts with a hard drive media device path node to be a
- full device path that includes the full hardware path to the device. This function enables the device to boot.
- To avoid requiring a connect on every boot, the front match is saved in a variable (the part point
- to the partition node. E.g. ACPI() /PCI()/ATA()/Partition() ).
- All successful history device paths
- that point to the front part of the partition node will be saved.
-
- @param HardDriveDevicePath EFI Device Path to boot, if it starts with a hard
- drive media device path.
- @return A Pointer to the full device path, or NULL if a valid Hard Drive devic path
- cannot be found.
-
-**/
-EFI_DEVICE_PATH_PROTOCOL *
-EFIAPI
-BdsExpandPartitionPartialDevicePathToFull (
- IN HARDDRIVE_DEVICE_PATH *HardDriveDevicePath
- );
-
-/**
- Return the bootable media handle.
- First, check whether the device is connected.
- Second, check whether the device path points to a device that supports SimpleFileSystemProtocol.
- Third, detect the the default boot file in the Media, and return the removable Media handle.
-
- @param DevicePath The Device Path to a bootable device.
-
- @return The bootable media handle. If the media on the DevicePath is not bootable, NULL will return.
-
-**/
-EFI_HANDLE
-EFIAPI
-BdsLibGetBootableHandle (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
- );
-
-
-/**
- Checks whether the Device path in a boot option points to a valid bootable device, and if the device
- is ready to boot now.
-
- @param DevPath The Device path in a boot option.
- @param CheckMedia If true, check whether the device is ready to boot now.
-
- @retval TRUE The Device path is valid.
- @retval FALSE The Device path is invalid.
-
-**/
-BOOLEAN
-EFIAPI
-BdsLibIsValidEFIBootOptDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevPath,
- IN BOOLEAN CheckMedia
- );
-
-/**
- Checks whether the Device path in a boot option points to a valid bootable device, and if the device
- is ready to boot now.
- If Description is not NULL and the device path points to a fixed BlockIo
- device, this function checks whether the description conflicts with other auto-created
- boot options.
-
- @param DevPath The Device path in a boot option.
- @param CheckMedia If true, checks if the device is ready to boot now.
- @param Description The description of a boot option.
-
- @retval TRUE The Device path is valid.
- @retval FALSE The Device path is invalid.
-
-**/
-BOOLEAN
-EFIAPI
-BdsLibIsValidEFIBootOptDevicePathExt (
- IN EFI_DEVICE_PATH_PROTOCOL *DevPath,
- IN BOOLEAN CheckMedia,
- IN CHAR16 *Description
- );
-
-/**
- For a bootable Device path, return its boot type.
-
- @param DevicePath The bootable device Path to check.
-
- @retval BDS_EFI_MEDIA_HD_BOOT The given device path contains MEDIA_DEVICE_PATH type device path node,
- whose subtype is MEDIA_HARDDRIVE_DP.
- @retval BDS_EFI_MEDIA_CDROM_BOOT If given device path contains MEDIA_DEVICE_PATH type device path node,
- whose subtype is MEDIA_CDROM_DP.
- @retval BDS_EFI_ACPI_FLOPPY_BOOT A given device path contains ACPI_DEVICE_PATH type device path node,
- whose HID is floppy device.
- @retval BDS_EFI_MESSAGE_ATAPI_BOOT A given device path contains MESSAGING_DEVICE_PATH type device path node,
- and its last device path node's subtype is MSG_ATAPI_DP.
- @retval BDS_EFI_MESSAGE_SCSI_BOOT A given device path contains MESSAGING_DEVICE_PATH type device path node,
- and its last device path node's subtype is MSG_SCSI_DP.
- @retval BDS_EFI_MESSAGE_USB_DEVICE_BOOT A given device path contains MESSAGING_DEVICE_PATH type device path node,
- and its last device path node's subtype is MSG_USB_DP.
- @retval BDS_EFI_MESSAGE_MISC_BOOT The device path does not contain any media device path node, and
- its last device path node points to a message device path node.
- @retval BDS_LEGACY_BBS_BOOT A given device path contains BBS_DEVICE_PATH type device path node.
- @retval BDS_EFI_UNSUPPORT An EFI Removable BlockIO device path does not point to a media and message device.
-
- **/
-UINT32
-EFIAPI
-BdsGetBootTypeFromDevicePath (
- IN EFI_DEVICE_PATH_PROTOCOL *DevicePath
- );
-
-
-/**
- This routine registers a function to adjust the different types of memory page numbers
- just before booting, and saves the updated info into the variable for the next boot to use.
-
-**/
-VOID
-EFIAPI
-BdsLibSaveMemoryTypeInformation (
- VOID
- );
-
-/**
- Identify a user and, if authenticated, returns the current user profile handle.
-
- @param[out] User Points to the user profile handle.
-
- @retval EFI_SUCCESS The user is successfully identified, or user identification
- is not supported.
- @retval EFI_ACCESS_DENIED The user was not successfully identified.
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibUserIdentify (
- OUT EFI_USER_PROFILE_HANDLE *User
- );
-
-/**
- This function checks if a Fv file device path is valid, according to a file GUID. If it is invalid,
- it tries to return the valid device path.
- FV address maybe changes for memory layout adjust from time to time, use this function
- could promise the Fv file device path is right.
-
- @param DevicePath On input, the Fv file device path to check. On
- output, the updated valid Fv file device path
- @param FileGuid the Fv file GUID.
-
- @retval EFI_INVALID_PARAMETER The input DevicePath or FileGuid is invalid.
- @retval EFI_UNSUPPORTED The input DevicePath does not contain an Fv file
- GUID at all.
- @retval EFI_ALREADY_STARTED The input DevicePath has pointed to the Fv file and is
- valid.
- @retval EFI_SUCCESS Successfully updated the invalid DevicePath
- and returned the updated device path in DevicePath.
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibUpdateFvFileDevicePath (
- IN OUT EFI_DEVICE_PATH_PROTOCOL ** DevicePath,
- IN EFI_GUID *FileGuid
- );
-
-
-/**
- Connect the specific USB device that matches the RemainingDevicePath,
- and whose bus is determined by Host Controller (Uhci or Ehci).
-
- @param HostControllerPI Uhci (0x00) or Ehci (0x20) or Both uhci and ehci
- (0xFF).
- @param RemainingDevicePath A short-form device path that starts with the first
- element being a USB WWID or a USB Class device
- path.
-
- @retval EFI_SUCCESS The specific Usb device is connected successfully.
- @retval EFI_INVALID_PARAMETER Invalid HostControllerPi (not 0x00, 0x20 or 0xFF)
- or RemainingDevicePath is not the USB class device path.
- @retval EFI_NOT_FOUND The device specified by device path is not found.
-
-**/
-EFI_STATUS
-EFIAPI
-BdsLibConnectUsbDevByShortFormDP(
- IN UINT8 HostControllerPI,
- IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath
- );
-
-
-//
-// The implementation of this function is provided by Platform code.
-//
-/**
- Convert Vendor device path to a device name.
-
- @param Str The buffer storing device name.
- @param DevPath The pointer to vendor device path.
-
-**/
-VOID
-DevPathVendor (
- IN OUT POOL_PRINT *Str,
- IN VOID *DevPath
- );
-
-/**
- Concatenates a formatted unicode string to an allocated pool.
- The caller must free the resulting buffer.
-
- @param Str Tracks the allocated pool, size in use, and amount of pool allocated.
- @param Fmt The format string.
- @param ... The data will be printed.
-
- @return Allocated buffer with the formatted string printed in it.
- The caller must free the allocated buffer.
- The buffer allocation is not packed.
-
-**/
-CHAR16 *
-EFIAPI
-CatPrint (
- IN OUT POOL_PRINT *Str,
- IN CHAR16 *Fmt,
- ...
- );
-
-/**
- Use SystemTable ConOut to stop video based Simple Text Out consoles from going
- to the video device. Put up LogoFile on every video device that is a console.
-
- @param[in] LogoFile The file name of logo to display on the center of the screen.
-
- @retval EFI_SUCCESS ConsoleControl has been flipped to graphics and logo displayed.
- @retval EFI_UNSUPPORTED Logo not found.
-
-**/
-EFI_STATUS
-EFIAPI
-EnableQuietBoot (
- IN EFI_GUID *LogoFile
- );
-
-
-/**
- Use SystemTable ConOut to turn on video based Simple Text Out consoles. The
- Simple Text Out screens will now be synced up with all non-video output devices.
-
- @retval EFI_SUCCESS UGA devices are back in text mode and synced up.
-
-**/
-EFI_STATUS
-EFIAPI
-DisableQuietBoot (
- VOID
- );
-
-#endif
-