]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Include/Library/GenericBdsLib.h
clean up the un-suitable ';' location when declaring the functions.
[mirror_edk2.git] / MdeModulePkg / Include / Library / GenericBdsLib.h
index 9e358ddf6574763aca248be6640b60e6b975caa2..654271dff60422427365d247fc9c6184a2aa1df6 100644 (file)
@@ -1,29 +1,20 @@
-/*++\r
+/** @file\r
+  Generic BDS library definition, include the data structure and function.\r
 \r
-Copyright (c) 2004 - 2008, Intel Corporation                                                         \r
-All rights reserved. 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
-http://opensource.org/licenses/bsd-license.php                                            \r
-                                                                                          \r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+Copyright (c) 2004 - 2008, Intel Corporation. <BR>\r
+All rights reserved. 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
+http://opensource.org/licenses/bsd-license.php\r
 \r
-Module Name:\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
 \r
-  GenericBdsLib.h\r
-\r
-Abstract:\r
-\r
-  Generic BDS library definition, include the file and data structure\r
-\r
---*/\r
+**/\r
 \r
 #ifndef _GENERIC_BDS_LIB_H_\r
 #define _GENERIC_BDS_LIB_H_\r
 \r
-#define PI_SPECIFICATION_VERSION 0x00010000\r
-\r
 #include <PiDxe.h>\r
 #include <Protocol/HiiDatabase.h>\r
 #include <IndustryStandard/PeImage.h>\r
@@ -34,7 +25,7 @@ extern EFI_HANDLE mBdsImageHandle;
 //\r
 // Constants which are variable names used to access variables\r
 //\r
-#define VarLegacyDevOrder L"LegacyDevOrder"\r
+#define VAR_LEGACY_DEV_ORDER L"LegacyDevOrder"\r
 \r
 //\r
 // Data structures and defines\r
@@ -114,20 +105,35 @@ typedef struct {
 //\r
 \r
 //\r
-// Bds boot relate lib functions\r
+// Bds boot related lib functions\r
 //\r
-EFI_STATUS\r
-BdsLibUpdateBootOrderList (\r
-  IN  LIST_ENTRY                 *BdsOptionList,\r
-  IN  CHAR16                         *VariableName\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 follow the UEFI specification and\r
+  special treat the legacy boot option with BBS_DEVICE_PATH.\r
+\r
+  @param  Option                 The boot option need to be processed\r
+  @param  DevicePath             The device path which describe 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 successfully.\r
+  @retval EFI_NOT_FOUND          If 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
@@ -135,70 +141,205 @@ BdsLibBootViaBootOption (
   OUT CHAR16                        **ExitData OPTIONAL\r
   );\r
 \r
+\r
+/**\r
+  This function will enumerate all possible boot device in the system,\r
+  it will only excute once of every boot.\r
+\r
+  @param  BdsBootOptionList      The header of the link list which indexed all\r
+                                 current boot options\r
+\r
+  @retval EFI_SUCCESS            Finished all the boot device enumerate and create\r
+                                 the boot option base on that boot device\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsLibEnumerateAllBootOption (\r
-  IN OUT LIST_ENTRY    *BdsBootOptionList\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 which present the device path to create\r
+                                 boot option\r
+  @param  BdsBootOptionList      The header of the link list which 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
+  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
+                                 on flash shell boot option\r
+  @param  BdsBootOptionList      The header of the link list which indexed all\r
+                                 current boot options\r
+\r
+**/\r
 VOID\r
+EFIAPI\r
 BdsLibBuildOptionFromShell (\r
-  IN  EFI_HANDLE                     Handle,\r
-  IN  LIST_ENTRY                 *BdsBootOptionList\r
+  IN EFI_HANDLE                  Handle,\r
+  IN OUT LIST_ENTRY              *BdsBootOptionList\r
   );\r
 \r
 //\r
 // Bds misc lib functions\r
 //\r
+/**\r
+  Return the default value for system Timeout variable.\r
+\r
+  @return Timeout value.\r
+\r
+**/\r
 UINT16\r
+EFIAPI\r
 BdsLibGetTimeout (\r
   VOID\r
   );\r
 \r
+/**\r
+  Get boot mode by looking up configuration table and parsing HOB list\r
+\r
+  @param  BootMode              Boot mode from PEI handoff HOB.\r
+\r
+  @retval EFI_SUCCESS           Successfully get 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 optoin link list, load and start\r
+  every driver the driver optoin device path point to.\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
+  IN LIST_ENTRY                   *BdsDriverLists\r
   );\r
 \r
+\r
+/**\r
+  Process BootOrder, or DriverOrder variables, by calling\r
+  BdsLibVariableToOption () for each UINT16 in the variables.\r
+\r
+  @param  BdsCommonOptionList   The header of the option list base on variable\r
+                                VariableName\r
+  @param  VariableName          EFI Variable name indicate the BootOrder or\r
+                                DriverOrder\r
+\r
+  @retval EFI_SUCCESS           Success create the boot option or driver option\r
+                                list\r
+  @retval EFI_OUT_OF_RESOURCES  Failed to get the boot option or driver option list\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsLibBuildOptionFromVar (\r
-  IN  LIST_ENTRY              *BdsCommonOptionList,\r
-  IN  CHAR16                      *VariableName\r
+  IN  LIST_ENTRY                      *BdsCommonOptionList,\r
+  IN  CHAR16                          *VariableName\r
   );\r
 \r
-VOID                      *\r
+/**\r
+  Read the EFI variable (VendorGuid/Name) and return a dynamically allocated\r
+  buffer, and the size of the buffer. If failure return NULL.\r
+\r
+  @param  Name                  String part of EFI variable name\r
+  @param  VendorGuid            GUID part of 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 of the EFI variable\r
+                                Caller is responsible freeing the buffer.\r
+  @retval NULL                  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                Pointer to EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL\r
+  @param  ...                   A variable argument list containing series of\r
+                                strings, the last string must be NULL.\r
+\r
+  @retval EFI_SUCCESS           Success print 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
-BDS_COMMON_OPTION         *\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 indicate if it is boot#### or\r
+                                driver####\r
+\r
+  @retval BDS_COMMON_OPTION     Get the option just been 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
+  IN OUT LIST_ENTRY                   *BdsCommonOptionList,\r
+  IN  CHAR16                          *VariableName\r
   );\r
 \r
+/**\r
+  This function will register the new boot#### or driver#### option base 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 which 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 success\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  LIST_ENTRY                     *BdsOptionList,\r
   IN  EFI_DEVICE_PATH_PROTOCOL       *DevicePath,\r
   IN  CHAR16                         *String,\r
   IN  CHAR16                         *VariableName\r
@@ -207,86 +348,234 @@ BdsLibRegisterNewOption (
 //\r
 // Bds connect or disconnect driver lib funcion\r
 //\r
+/**\r
+  Connects all drivers to all controllers.\r
+  This function make sure all the current system driver will manage\r
+  the correspoinding controllers if have. And at the same time, make\r
+  sure all the system controllers have driver to manage it if have.\r
+\r
+**/\r
 VOID\r
+EFIAPI\r
 BdsLibConnectAllDriversToAllControllers (\r
   VOID\r
   );\r
 \r
+/**\r
+  This function will connect all the system driver to controller\r
+  first, and then special connect the default console, this make\r
+  sure all the system controller avialbe and the platform default\r
+  console connected.\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 success, then still give one chance to do the dispatch,\r
+  which load the missing drivers if possible.\r
+\r
+  @param  DevicePathToConnect   The device path which will be connected, it can be\r
+                                a multi-instance device path\r
+\r
+  @retval EFI_SUCCESS           All handles associate with every device path  node\r
+                                have been created\r
+  @retval EFI_OUT_OF_RESOURCES  There is no resource to create new handles\r
+  @retval EFI_NOT_FOUND         Create the handle associate with one device  path\r
+                                node failed\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. The\r
+  connection will finish until every handle's child handle created if it have.\r
+\r
+  @retval EFI_SUCCESS           All handles and it's child handle have been\r
+                                connected\r
+  @retval EFI_STATUS            Return the status of gBS->LocateHandleBuffer().\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsLibConnectAllEfi (\r
   VOID\r
   );\r
 \r
+\r
+/**\r
+  This function will disconnect all current system handles. The disconnection\r
+  will finish until every handle have been disconnected.\r
+\r
+  @retval EFI_SUCCESS           All handles have been disconnected\r
+  @retval EFI_STATUS            Return the status of gBS->LocateHandleBuffer().\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsLibDisconnectAllEfi (\r
   VOID\r
   );\r
 \r
 //\r
-// Bds console relate lib functions\r
+// Bds console related lib functions\r
 //\r
+/**\r
+  This function will search every simpletxt devive in current system,\r
+  and make every simpletxt device as pertantial console device.\r
+\r
+**/\r
 VOID\r
+EFIAPI\r
 BdsLibConnectAllConsoles (\r
   VOID\r
   );\r
 \r
+\r
+/**\r
+  This function will connect console device base on the console\r
+  device variable ConIn, ConOut and ErrOut.\r
+\r
+  @retval EFI_SUCCESS              At least one of the ConIn and ConOut device have\r
+                                   been connected success.\r
+  @retval EFI_STATUS               Return the status of BdsLibConnectConsoleVariable ().\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsLibConnectAllDefaultConsoles (\r
   VOID\r
   );\r
 \r
+/**\r
+  This function update console variable based on ConVarName, it can\r
+  add or remove one specific console device path from the variable\r
+\r
+  @param  ConVarName               Console related variable name, ConIn, ConOut,\r
+                                   ErrOut.\r
+  @param  CustomizedConDevicePath  The console device path which will be added to\r
+                                   the console variable ConVarName, this parameter\r
+                                   can not be multi-instance.\r
+  @param  ExclusiveDevicePath      The console device path which will be removed\r
+                                   from the console variable ConVarName, this\r
+                                   parameter can not be multi-instance.\r
+\r
+  @retval EFI_UNSUPPORTED          The added device path is same to the removed one.\r
+  @retval EFI_SUCCESS              Success add or remove 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, if\r
+  anyone of the instances is connected success, then this function\r
+  will return success.\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 relate lib functions\r
+// Bds device path related lib functions\r
 //\r
-EFI_DEVICE_PATH_PROTOCOL  *\r
+/**\r
+  Function unpacks a device path data structure so that all the nodes\r
+  of a device path are naturally aligned.\r
+\r
+  @param  DevPath  A pointer to a device path data structure\r
+\r
+  @return If the memory for the device path is successfully allocated, then a\r
+          pointer to the new device path is returned.  Otherwise, NULL is returned.\r
+\r
+**/\r
+EFI_DEVICE_PATH_PROTOCOL *\r
+EFIAPI\r
 BdsLibUnpackDevicePath (\r
   IN EFI_DEVICE_PATH_PROTOCOL  *DevPath\r
   );\r
 \r
+/**\r
+  Delete the instance in Multi which matches partly with Single 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
+  @return This function will remove the device path instances in Multi which partly\r
+          match with the Single, and return the result 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
+  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 Multi device path.\r
+  @retval FALSE                 The Single device path is not match within 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
-CHAR16                    *\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 new allocated Unicode string that represents the device path.\r
+\r
+**/\r
+CHAR16 *\r
+EFIAPI\r
 DevicePathToStr (\r
-  EFI_DEVICE_PATH_PROTOCOL     *DevPath\r
+  IN EFI_DEVICE_PATH_PROTOCOL     *DevPath\r
   );\r
 \r
-VOID                      *\r
-EfiLibGetVariable (\r
-  IN CHAR16               *Name,\r
-  IN EFI_GUID             *VendorGuid\r
-  );\r
 \r
 //\r
 // Internal definitions\r
@@ -324,30 +613,25 @@ typedef struct {
 } ISCSI_DEVICE_PATH_WITH_NAME;\r
 \r
 \r
-//\r
-// Internal functions\r
-//\r
-EFI_STATUS\r
-BdsBootByDiskSignatureAndPartition (\r
-  IN  BDS_COMMON_OPTION          * Option,\r
-  IN  HARDDRIVE_DEVICE_PATH      * HardDriveDevicePath,\r
-  IN  UINT32                     LoadOptionsSize,\r
-  IN  VOID                       *LoadOptions,\r
-  OUT UINTN                      *ExitDataSize,\r
-  OUT CHAR16                     **ExitData OPTIONAL\r
-  );\r
-\r
 //\r
 // Notes: EFI 64 shadow all option rom\r
 //\r
 #if defined (MDE_CPU_IPF)\r
 #define EFI64_SHADOW_ALL_LEGACY_ROM() ShadowAllOptionRom ();\r
-VOID\r
-ShadowAllOptionRom();\r
 #else\r
 #define EFI64_SHADOW_ALL_LEGACY_ROM()\r
 #endif\r
 \r
+/**\r
+  Shadow all Legacy OptionRom. \r
+\r
+**/\r
+VOID\r
+EFIAPI\r
+ShadowAllOptionRom (\r
+  VOID\r
+  );\r
+\r
 //\r
 // BBS support macros and functions\r
 //\r
@@ -361,27 +645,76 @@ ShadowAllOptionRom();
 #define REFRESH_LEGACY_BOOT_OPTIONS\r
 #endif\r
 \r
+/**\r
+  Delete all the invalid legacy boot options.\r
+\r
+  @retval EFI_SUCCESS             All invalide legacy boot options are deleted.\r
+  @retval EFI_OUT_OF_RESOURCES    Fail to allocate necessary memory.\r
+  @retval EFI_NOT_FOUND           Fail to retrive variable of boot order.\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsDeleteAllInvalidLegacyBootOptions (\r
   VOID\r
   );\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 are added successfully \r
+                            or they are already in boot options.\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsAddNonExistingLegacyBootOptions (\r
   VOID\r
   );\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 are added successfully.\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsUpdateLegacyDevOrder (\r
   VOID\r
   );\r
 \r
+/**\r
+\r
+  Set 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 refresh BBS table.\r
+  \r
+  @retval EFI_SUCCESS       The boot priority for BBS entries is refreshed successfully.\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsRefreshBbsTableForBoot (\r
   IN BDS_COMMON_OPTION        *Entry\r
   );\r
 \r
+/**\r
+\r
+  Delete boot option specified by OptionNumber and adjust the boot order.\r
+\r
+  @param  OptionNumber      The boot option to be deleted.\r
+  @param  BootOrder         Boot order list to be adjusted by remove this boot option.\r
+  @param  BootOrderSize     The size of Boot order list will be modified.\r
+  \r
+  @retval EFI_SUCCESS       The boot option is deleted successfully.\r
+\r
+**/\r
 EFI_STATUS\r
+EFIAPI\r
 BdsDeleteBootOption (\r
   IN UINTN                       OptionNumber,\r
   IN OUT UINT16                  *BootOrder,\r
@@ -391,57 +724,106 @@ BdsDeleteBootOption (
 //\r
 //The interface functions relate with Setup Browser Reset Reminder feature\r
 //\r
+/**\r
+  Enable the setup browser reset reminder feature.\r
+  This routine is used in platform tip. If the platform policy need 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 platform tip. If the platform policy do 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 enable the reset reminder feature. The default is enabled.\r
+\r
+**/\r
 BOOLEAN\r
+EFIAPI\r
 IsResetReminderFeatureEnable (\r
   VOID\r
   );\r
 \r
+/**\r
+  Check if  user changed any option setting which 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, Popup 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
+  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
+EFIAPI\r
 BdsLibGetImageHeader (\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
-EFI_STATUS\r
-BdsLibGetHiiHandles (\r
-  IN     EFI_HII_DATABASE_PROTOCOL *HiiDatabase,\r
-  IN OUT UINT16                    *HandleBufferLength,\r
-  OUT    EFI_HII_HANDLE            **HiiHandleBuffer\r
   );\r
-  \r
+\r
 //\r
 // Define the boot type which to classify the boot option type\r
 // Different boot option type could have different boot behavior\r
@@ -480,39 +862,145 @@ BdsLibGetHiiHandles (
 #define  PCI_CLASSC_PI_UHCI               0x00\r
 #define  PCI_CLASSC_PI_EHCI               0x20\r
 \r
+/**\r
+  Check whether there is a instance in BlockIoDevicePath, which contain multi device path\r
+  instances, has the same partition node with HardDriveDevicePath device path\r
+\r
+  @param  BlockIoDevicePath      Multi device path instances which need to check\r
+  @param  HardDriveDevicePath    A device path which starts 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
+/**\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. We need\r
+  to do this so it can be booted. As an optimizaiton the front match (the part point\r
+  to the partition node. E.g. ACPI() /PCI()/ATA()/Partition() ) is saved in a variable\r
+  so a connect all is not required on every boot. All successful history device path\r
+  which point to partition node (the front part) 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 the device is connected\r
+  Second, check whether the device path point to a device which support SimpleFileSystemProtocol,\r
+  Third, detect the the default boot file in the Media, and return the removable Media handle.\r
+\r
+  @param  DevicePath             Device Path to a  bootable device\r
+\r
+  @retval NULL                   The media on the DevicePath is not bootable\r
+\r
+**/\r
 EFI_HANDLE\r
+EFIAPI\r
 BdsLibGetBootableHandle (\r
   IN  EFI_DEVICE_PATH_PROTOCOL      *DevicePath\r
   );\r
   \r
+\r
+/**\r
+  Check whether the Device path in a boot option point to a valide bootable device,\r
+  And if CheckMedia is true, check the device is ready to boot now.\r
+\r
+  @param  DevPath     the Device path in a boot option\r
+  @param  CheckMedia  if true, check the device is ready to boot now.\r
+\r
+  @retval TRUE        the Device path  is valide\r
+  @retval FALSE       the Device path  is invalide .\r
+\r
+**/\r
 BOOLEAN\r
+EFIAPI\r
 BdsLibIsValidEFIBootOptDevicePath (\r
   IN EFI_DEVICE_PATH_PROTOCOL     *DevPath,\r
   IN BOOLEAN                      CheckMedia\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           If the device path contains any media deviec path node, it is media boot type\r
+                                          For the floppy node, handle it as media node\r
+  @retval BDS_EFI_MEDIA_CDROM_BOOT        If the device path contains any media deviec path node, it is media boot type\r
+                                          For the floppy node, handle it as media node\r
+  @retval BDS_EFI_ACPI_FLOPPY_BOOT        If the device path contains any media deviec path node, it is media boot type\r
+                                          For the floppy node, handle it as media node\r
+  @retval BDS_EFI_MESSAGE_ATAPI_BOOT      If the device path not contains any media deviec path node,  and\r
+                                          its last device path node point to a message device path node, it is\r
+  \r
+  @retval BDS_EFI_MESSAGE_SCSI_BOOT       If the device path not contains any media deviec path node,  and\r
+                                          its last device path node point to a message device path node, it is\r
+  @retval BDS_EFI_MESSAGE_USB_DEVICE_BOOT If the device path not contains any media deviec path node,  and\r
+                                          its last device path node point to a message device path node, it is\r
+  @retval BDS_EFI_MESSAGE_MISC_BOOT       If the device path not contains any media deviec path node,  and\r
+                                          its last device path node point to a message device path node, it is\r
+  @retval BDS_LEGACY_BBS_BOOT             Legacy boot type\r
+  @retval BDS_EFI_UNSUPPORT               An EFI Removable BlockIO device path not point to a media and message devie,   \r
+\r
+**/\r
 UINT32\r
+EFIAPI\r
 BdsGetBootTypeFromDevicePath (\r
   IN  EFI_DEVICE_PATH_PROTOCOL     *DevicePath\r
   );\r
-  \r
+\r
+\r
+/**\r
+  This routine register a function to adjust the different type memory page number\r
+  just before booting and save the updated info into the variable for next boot to use.\r
+\r
+**/\r
 VOID\r
 EFIAPI\r
 BdsLibSaveMemoryTypeInformation (\r
-  VOID \r
+  VOID\r
   );\r
   \r
+\r
+/**\r
+  According to a file guild, check a Fv file device path is valid. If it is invalid,\r
+  try to return the valid device path.\r
+  FV address maybe changes for memory layout adjust from time to time, use this funciton\r
+  could promise the Fv file device path is right.\r
+\r
+  @param  DevicePath             on input, the Fv file device path need to check on\r
+                                 output, the updated valid Fv file device path\r
+  @param  FileGuid               the Fv file guild\r
+\r
+  @retval EFI_INVALID_PARAMETER  the input DevicePath or FileGuid is invalid\r
+                                 parameter\r
+  @retval EFI_UNSUPPORTED        the input DevicePath does not contain Fv file\r
+                                 guild at all\r
+  @retval EFI_ALREADY_STARTED    the input DevicePath has pointed to Fv file, it is\r
+                                 valid\r
+  @retval EFI_SUCCESS            has successfully updated the invalid DevicePath,\r
+                                 and return the updated device path in DevicePath\r
+\r
+**/\r
 EFI_STATUS\r
 EFIAPI\r
 BdsLibUpdateFvFileDevicePath (\r
@@ -520,33 +1008,67 @@ BdsLibUpdateFvFileDevicePath (
   IN  EFI_GUID                          *FileGuid\r
   );\r
 \r
+\r
+/**\r
+  Connect the specific Usb device which match the short form device path,\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
-BdsLibConnectUsbDevByShortFormDP (\r
+EFIAPI\r
+BdsLibConnectUsbDevByShortFormDP(\r
   IN UINT8                      HostControllerPI,\r
   IN EFI_DEVICE_PATH_PROTOCOL   *RemainingDevicePath\r
   );\r
   \r
-EFI_TPL\r
-BdsLibGetCurrentTpl (\r
-  VOID\r
-  );\r
 \r
 //\r
 // The implementation of this function is provided by Platform code.\r
 //\r
+/**\r
+  Convert Vendor device path to device name.\r
+\r
+  @param  Str      The buffer store device name\r
+  @param  DevPath  Pointer to vendor device path\r
+\r
+**/\r
 VOID\r
+EFIAPI\r
 DevPathVendor (\r
   IN OUT POOL_PRINT       *Str,\r
   IN VOID                 *DevPath\r
-  )\r
-;\r
+  );\r
+\r
+/**\r
+  Concatenates a formatted unicode string to 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
 #endif\r
 \r