]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/UefiBootManagerLib/InternalBm.h
MdeModulePkg/UefiBootManagerLib: BmGetActiveConsoleIn code cleanup
[mirror_edk2.git] / MdeModulePkg / Library / UefiBootManagerLib / InternalBm.h
index 9baba8689b5738dde7c163a45d1023f648b30a34..b261d769d24eb9baab5a96135db39c185ca1aaeb 100644 (file)
@@ -1,7 +1,8 @@
 /** @file\r
   BDS library definition, include the file and data structure\r
 \r
-Copyright (c) 2004 - 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2004 - 2016, Intel Corporation. All rights reserved.<BR>\r
+(C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
 which accompanies this distribution.  The full text of the license may be found at\r
@@ -41,6 +42,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <Protocol/BootLogo.h>\r
 #include <Protocol/DriverHealth.h>\r
 #include <Protocol/FormBrowser2.h>\r
+#include <Protocol/VariableLock.h>\r
 \r
 #include <Guid/ZeroGuid.h>\r
 #include <Guid/MemoryTypeInformation.h>\r
@@ -90,7 +92,6 @@ typedef enum {
   BmMessageSataBoot,\r
   BmMessageUsbBoot,\r
   BmMessageScsiBoot,\r
-  BmMessageNetworkBoot,\r
   BmMiscBoot\r
 } BM_BOOT_TYPE;\r
 \r
@@ -100,12 +101,23 @@ CHAR16 *
   IN EFI_HANDLE          Handle\r
   );\r
 \r
-#define BM_OPTION_NAME_LEN                          sizeof ("SysPrep####")\r
+//\r
+// PlatformRecovery#### is the load option with the longest name\r
+//\r
+#define BM_OPTION_NAME_LEN                          sizeof ("PlatformRecovery####")\r
 extern CHAR16  *mBmLoadOptionName[];\r
 \r
+/**\r
+  Visitor function to be called by BmForEachVariable for each variable\r
+  in variable storage.\r
+\r
+  @param Name    Variable name.\r
+  @param Guid    Variable GUID.\r
+  @param Context The same context passed to BmForEachVariable.\r
+**/\r
 typedef\r
 VOID\r
-(*VARIABLE_VISITOR) (\r
+(*BM_VARIABLE_VISITOR) (\r
   CHAR16                *Name,\r
   EFI_GUID              *Guid,\r
   VOID                  *Context\r
@@ -118,8 +130,8 @@ VOID
   @param Context   The context passed to Visitor function.\r
 **/\r
 VOID\r
-ForEachVariable (\r
-  VARIABLE_VISITOR            Visitor,\r
+BmForEachVariable (\r
+  BM_VARIABLE_VISITOR         Visitor,\r
   VOID                        *Context\r
   );\r
 \r
@@ -152,28 +164,6 @@ typedef struct {
 \r
 #define BM_HOTKEY_FROM_LINK(a) CR (a, BM_HOTKEY, Link, BM_HOTKEY_SIGNATURE)\r
 \r
-/**\r
-  Get the image file buffer data and buffer size by its device path. \r
-\r
-  @param FilePath  On input, a pointer to an allocated buffer containing the device\r
-                   path of the file.\r
-                   On output the pointer could be NULL when the function fails to\r
-                   load the boot option, or could point to an allocated buffer containing\r
-                   the device path of the file.\r
-                   It could be updated by either short-form device path expanding,\r
-                   or default boot file path appending.\r
-                   Caller is responsible to free it when it's non-NULL.\r
-  @param FileSize  A pointer to the size of the file buffer.\r
-\r
-  @retval NULL   File is NULL, or FileSize is NULL. Or, the file can't be found.\r
-  @retval other  The file buffer. The caller is responsible to free the memory.\r
-**/\r
-VOID *\r
-BmLoadEfiBootOption (\r
-  IN OUT EFI_DEVICE_PATH_PROTOCOL **FilePath,\r
-  OUT    UINTN                    *FileSize\r
-  );\r
-\r
 /**\r
   Get the Option Number that wasn't used.\r
 \r
@@ -207,35 +197,18 @@ BmWriteBootToOsPerformanceData (
   IN VOID       *Context\r
   );\r
 \r
-\r
-/**\r
-  Get the headers (dos, image, optional header) from an image\r
-\r
-  @param  Device                SimpleFileSystem device handle\r
-  @param  FileName              File name for the image\r
-  @param  DosHeader             Pointer to dos header\r
-  @param  Hdr                   The buffer in which to return the PE32, PE32+, or TE header.\r
-\r
-  @retval EFI_SUCCESS           Successfully get the machine type.\r
-  @retval EFI_NOT_FOUND         The file is not found.\r
-  @retval EFI_LOAD_ERROR        File is not a valid image file.\r
-\r
-**/\r
-EFI_STATUS\r
-BmGetImageHeader (\r
-  IN  EFI_HANDLE                  Device,\r
-  IN  CHAR16                      *FileName,\r
-  OUT EFI_IMAGE_DOS_HEADER        *DosHeader,\r
-  OUT EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION   Hdr\r
-  );\r
-\r
 /**\r
   This routine adjust the memory information for different memory type and \r
-  save them into the variables for next boot.\r
+  save them into the variables for next boot. It resets the system when\r
+  memory information is updated and the current boot option belongs to\r
+  boot category instead of application category.\r
+\r
+  @param Boot  TRUE if current boot option belongs to boot category instead of\r
+               application category.\r
 **/\r
 VOID\r
 BmSetMemoryTypeInformationVariable (\r
-  VOID\r
+  IN BOOLEAN                    Boot\r
   );\r
 \r
 /**\r
@@ -406,27 +379,6 @@ BmDelPartMatchInstance (
   IN     EFI_DEVICE_PATH_PROTOCOL  *Single\r
   );\r
 \r
-\r
-/**\r
-  Return the index of the load option in the load option array.\r
-\r
-  The function consider two load options are equal when the \r
-  OptionType, Attributes, Description, FilePath and OptionalData are equal.\r
-\r
-  @param Key    Pointer to the load option to be found.\r
-  @param Array  Pointer to the array of load options to be found.\r
-  @param Count  Number of entries in the Array.\r
-\r
-  @retval -1          Key wasn't found in the Array.\r
-  @retval 0 ~ Count-1 The index of the Key in the Array.\r
-**/\r
-INTN\r
-BmFindLoadOption (\r
-  IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Key,\r
-  IN CONST EFI_BOOT_MANAGER_LOAD_OPTION *Array,\r
-  IN UINTN                              Count\r
-  );\r
-\r
 /**\r
   Repair all the controllers according to the Driver Health status queried.\r
 **/\r
@@ -445,4 +397,58 @@ BmPrintDp (
   EFI_DEVICE_PATH_PROTOCOL            *DevicePath\r
   );\r
 \r
+/**\r
+  Convert a single character to number.\r
+  It assumes the input Char is in the scope of L'0' ~ L'9' and L'A' ~ L'F'\r
+\r
+  @param    Char   The input char which need to convert to int.\r
+\r
+  @return  The converted 8-bit number or (UINTN) -1 if conversion failed.\r
+**/\r
+UINTN\r
+BmCharToUint (\r
+  IN CHAR16                           Char\r
+  );\r
+\r
+\r
+/**\r
+  Get the file buffer from the file system produced by Load File instance.\r
+\r
+  @param LoadFileHandle The handle of LoadFile instance.\r
+  @param FullPath       Return the full device path pointing to the load option.\r
+  @param FileSize       Return the size of the load option.\r
+\r
+  @return  The load option buffer.\r
+**/\r
+VOID *\r
+BmGetFileBufferFromLoadFileFileSystem (\r
+  IN  EFI_HANDLE                      LoadFileHandle,\r
+  OUT EFI_DEVICE_PATH_PROTOCOL        **FullPath,\r
+  OUT UINTN                           *FileSize\r
+  );\r
+\r
+/**\r
+  Return the boot description for the controller.\r
+\r
+  @param Handle                Controller handle.\r
+\r
+  @return  The description string.\r
+**/\r
+CHAR16 *\r
+BmGetBootDescription (\r
+  IN EFI_HANDLE                  Handle\r
+  );\r
+\r
+/**\r
+  Enumerate all boot option descriptions and append " 2"/" 3"/... to make\r
+  unique description.\r
+\r
+  @param BootOptions            Array of boot options.\r
+  @param BootOptionCount        Count of boot options.\r
+**/\r
+VOID\r
+BmMakeBootOptionDescriptionUnique (\r
+  EFI_BOOT_MANAGER_LOAD_OPTION         *BootOptions,\r
+  UINTN                                BootOptionCount\r
+  );\r
 #endif // _INTERNAL_BM_H_\r