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