]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/BdsDxe/BootMaint/UpdatePage.c
Remove SafeFreePool from MemoryAllocationLib as this API's name is misleading. Its...
[mirror_edk2.git] / MdeModulePkg / Universal / BdsDxe / BootMaint / UpdatePage.c
index 3dd5df7997672df5cd8db0102431b3c6cd49c0a7..2ffb1ff037a7259751f37598e72dff5ade905175 100644 (file)
@@ -1,5 +1,5 @@
 /** @file\r
-  Dynamically Update the pages\r
+Dynamically update the pages.\r
 \r
 Copyright (c) 2004 - 2008, Intel Corporation. <BR>\r
 All rights reserved. This program and the accompanying materials\r
@@ -17,11 +17,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 /**\r
   Refresh the global UpdateData structure.\r
 \r
-\r
-  @param VOID            EDES_TODO: Add parameter description\r
-\r
-           EDES_TODO: Incomplete Descriptions  None.\r
-\r
 **/\r
 VOID\r
 RefreshUpdateData (\r
@@ -32,11 +27,10 @@ RefreshUpdateData (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
-\r
-  @return EDES_TODO: Add description for return value\r
+  Add a "Go back to main page" tag in front of the form when there are no\r
+  "Apply changes" and "Discard changes" tags in the end of the form.\r
\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -64,11 +58,10 @@ UpdatePageStart (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
+  Create the "Apply changes" and "Discard changes" tags. And\r
+  ensure user can return to the main page.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -121,12 +114,12 @@ UpdatePageEnd (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
+  Clean up the dynamic opcode at label and form specified by\r
+  both LabelId. \r
 \r
-  @param LabelId         EDES_TODO: Add parameter description\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
-\r
-  @return EDES_TODO: Add description for return value\r
+  @param LabelId         It is both the Form ID and Label ID for\r
+                         opcode deletion.\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -151,11 +144,13 @@ CleanUpPage (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
+  Boot a file selected by user at File Expoloer of BMM.\r
 \r
-  @param FileContext     EDES_TODO: Add parameter description\r
+  @param FileContext     The file context data, which contains the device path\r
+                         of the file to be boot from.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @retval EFI_SUCCESS    The function completed successfull.\r
+  @return                 Other value if the boot from the file fails.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -179,25 +174,19 @@ BootThisFile (
   //\r
   gST->ConOut->ClearScreen (gST->ConOut);\r
 \r
-  gBS->RaiseTPL (TPL_APPLICATION);\r
-\r
   ExitDataSize  = 0;\r
 \r
   Status        = BdsLibBootViaBootOption (Option, Option->DevicePath, &ExitDataSize, &ExitData);\r
 \r
-  gBS->RestoreTPL (TPL_APPLICATION);\r
-\r
   return Status;\r
 \r
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
-\r
-  @return EDES_TODO: Add description for return value\r
+  Create a list of Goto Opcode for all terminal devices logged\r
+  by TerminaMenu. This list will be inserted to form FORM_CON_COM_SETUP_ID.\r
 \r
+  @param CallbackData    The BMM context data.\r
 **/\r
 VOID\r
 UpdateConCOMPage (\r
@@ -229,11 +218,10 @@ UpdateConCOMPage (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
+  Create a lit of boot option from global BootOptionMenu. It\r
+  allow user to delete the boot option.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -276,11 +264,9 @@ UpdateBootDelPage (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
+  Create a lit of driver option from global DriverMenu.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -312,11 +298,10 @@ UpdateDrvAddHandlePage (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
+  Create a lit of driver option from global DriverOptionMenu. It\r
+  allow user to delete the driver option.\r
 \r
-  @param CallbackData    EDES_TODO: Add parameter description\r
-\r
-  @return EDES_TODO: Add description for return value\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -357,11 +342,10 @@ UpdateDrvDelPage (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
+  Prepare the page to allow user to add description for \r
+  a Driver Option.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -427,13 +411,11 @@ UpdateDriverAddHandleDescPage (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
+  Update console page.\r
 \r
-  @param UpdatePageId    EDES_TODO: Add parameter description\r
-  @param ConsoleMenu     EDES_TODO: Add parameter description\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
-\r
-  @return EDES_TODO: Add description for return value\r
+  @param UpdatePageId    The form ID to be updated.\r
+  @param ConsoleMenu     The console menu list.\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -510,13 +492,12 @@ UpdateConsolePage (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param UpdatePageId    EDES_TODO: Add parameter description\r
-  @param OptionMenu      EDES_TODO: Add parameter description\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
+  Update the page's NV Map if user has changed the order\r
+  a list. This list can be Boot Order or Driver Order.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @param UpdatePageId    The form ID to be updated.\r
+  @param OptionMenu      The new list.\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -538,7 +519,7 @@ UpdateOrderPage (
 \r
   ZeroMem (CallbackData->BmmFakeNvData.OptionOrder, 100);\r
 \r
-  IfrOptionList = EfiAllocateZeroPool (sizeof (IFR_OPTION) * OptionMenu->MenuNumber);\r
+  IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * OptionMenu->MenuNumber);\r
   if (NULL == IfrOptionList) {\r
     return ;\r
   }\r
@@ -568,7 +549,7 @@ UpdateOrderPage (
       );\r
   }\r
 \r
-  SafeFreePool (IfrOptionList);\r
+  FreePool (IfrOptionList);\r
 \r
   UpdatePageEnd (CallbackData);\r
 \r
@@ -580,11 +561,10 @@ UpdateOrderPage (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
+  Create the dynamic page to allow user to set\r
+  the "BootNext" vaule.\r
 \r
-  @param CallbackData    EDES_TODO: Add parameter description\r
-\r
-  @return EDES_TODO: Add description for return value\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -606,7 +586,7 @@ UpdateBootNextPage (
   CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, &BootOptionMenu);\r
 \r
   if (NumberOfOptions > 0) {\r
-    IfrOptionList = EfiAllocateZeroPool ((NumberOfOptions + 1) * sizeof (IFR_OPTION));\r
+    IfrOptionList = AllocateZeroPool ((NumberOfOptions + 1) * sizeof (IFR_OPTION));\r
 \r
     ASSERT (IfrOptionList);\r
 \r
@@ -646,18 +626,17 @@ UpdateBootNextPage (
       &gUpdateData\r
       );\r
 \r
-    SafeFreePool (IfrOptionList);\r
+    FreePool (IfrOptionList);\r
   }\r
 \r
   UpdatePageEnd (CallbackData);\r
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
+  Create the dynamic page to allow user to set\r
+  the "TimeOut" vaule.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -696,10 +675,7 @@ UpdateTimeOutPage (
 /**\r
   Refresh the text mode page\r
 \r
-\r
-  @param CallbackData    BMM_CALLBACK_DATA\r
-\r
-           EDES_TODO: Incomplete Descriptions  None.\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -744,10 +720,10 @@ UpdateConModePage (
     return;\r
   }\r
 \r
-  IfrOptionList       = EfiAllocateZeroPool (sizeof (IFR_OPTION) * ValidMode);\r
+  IfrOptionList       = AllocateZeroPool (sizeof (IFR_OPTION) * ValidMode);\r
   ASSERT(IfrOptionList != NULL);\r
 \r
-  ModeToken           = EfiAllocateZeroPool (sizeof (EFI_STRING_ID) * ValidMode);\r
+  ModeToken           = AllocateZeroPool (sizeof (EFI_STRING_ID) * ValidMode);\r
   ASSERT(ModeToken != NULL);\r
 \r
   //\r
@@ -795,18 +771,18 @@ UpdateConModePage (
     ValidMode,\r
     &gUpdateData\r
     );\r
-  SafeFreePool (IfrOptionList);\r
-  SafeFreePool (ModeToken);\r
+  FreePool (IfrOptionList);\r
+  FreePool (ModeToken);\r
 \r
   UpdatePageEnd (CallbackData);\r
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
+  Create the dynamic page which allows user to \r
+  set the property such as Baud Rate, Data Bits,\r
+  Parity, Stop Bits, Terminal Type.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -835,12 +811,12 @@ UpdateTerminalPage (
 \r
   NewTerminalContext  = (BM_TERMINAL_CONTEXT *) NewMenuEntry->VariableContext;\r
 \r
-  IfrOptionList       = EfiAllocateZeroPool (sizeof (IFR_OPTION) * 19);\r
+  IfrOptionList       = AllocateZeroPool (sizeof (IFR_OPTION) * 19);\r
   if (IfrOptionList == NULL) {\r
     return ;\r
   }\r
 \r
-  for (Index = 0; Index < 19; Index++) {\r
+  for (Index = 0; Index < sizeof (BaudRateList) / sizeof (BaudRateList [0]); Index++) {\r
     CheckFlags = 0;\r
     if (NewTerminalContext->BaudRate == (UINT64) (BaudRateList[Index].Value)) {\r
       CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
@@ -866,7 +842,7 @@ UpdateTerminalPage (
     &gUpdateData\r
     );\r
 \r
-  for (Index = 0; Index < 4; Index++) {\r
+  for (Index = 0; Index < sizeof (DataBitsList) / sizeof (DataBitsList[0]); Index++) {\r
     CheckFlags = 0;\r
 \r
     if (NewTerminalContext->DataBits == DataBitsList[Index].Value) {\r
@@ -893,7 +869,7 @@ UpdateTerminalPage (
     &gUpdateData\r
     );\r
 \r
-  for (Index = 0; Index < 5; Index++) {\r
+  for (Index = 0; Index < sizeof (ParityList) / sizeof (ParityList[0]); Index++) {\r
     CheckFlags = 0;\r
     if (NewTerminalContext->Parity == ParityList[Index].Value) {\r
       CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
@@ -919,7 +895,7 @@ UpdateTerminalPage (
     &gUpdateData\r
     );\r
 \r
-  for (Index = 0; Index < 3; Index++) {\r
+  for (Index = 0; Index < sizeof (StopBitsList) / sizeof (StopBitsList[0]); Index++) {\r
     CheckFlags = 0;\r
     if (NewTerminalContext->StopBits == StopBitsList[Index].Value) {\r
       CheckFlags |= EFI_IFR_OPTION_DEFAULT;\r
@@ -970,18 +946,17 @@ UpdateTerminalPage (
     &gUpdateData\r
     );\r
 \r
-  SafeFreePool (IfrOptionList);\r
+  FreePool (IfrOptionList);\r
 \r
   UpdatePageEnd (CallbackData);\r
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
+  Dispatch the correct update page function to call based on\r
+  the UpdatePageId.\r
 \r
-  @param UpdatePageId    EDES_TODO: Add parameter description\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
-\r
-  @return EDES_TODO: Add description for return value\r
+  @param UpdatePageId    The form ID.\r
+  @param CallbackData    The BMM context data.\r
 \r
 **/\r
 VOID\r
@@ -1018,13 +993,13 @@ UpdatePageBody (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param DeviceType      EDES_TODO: Add parameter description\r
-  @param OptionIndex     EDES_TODO: Add parameter description\r
-  @param OptionSize      EDES_TODO: Add parameter description\r
+  Get the index number (#### in Boot####) for the boot option pointed to a BBS legacy device type\r
+  specified by DeviceType.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @param DeviceType      The legacy device type. It can be floppy, network, harddisk, cdrom,\r
+                         etc.\r
+  @param OptionIndex     Returns the index number (#### in Boot####).\r
+  @param OptionSize      Return the size of the Boot### variable.\r
 \r
 **/\r
 VOID *\r
@@ -1088,24 +1063,24 @@ GetLegacyBootOptionVar (
         (BBS_BBS_DP == DevicePath->SubType)\r
         ) {\r
       *OptionIndex = OrderBuffer[Index];\r
-      SafeFreePool (OrderBuffer);\r
+      FreePool (OrderBuffer);\r
       return OptionBuffer;\r
     } else {\r
-      SafeFreePool (OptionBuffer);\r
+      FreePool (OptionBuffer);\r
     }\r
   }\r
 \r
-  SafeFreePool (OrderBuffer);\r
+  FreePool (OrderBuffer);\r
   return NULL;\r
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
+  Create a dynamic page so that Legacy Device boot order\r
+  can be set for specified device type.\r
 \r
-  @param UpdatePageId    EDES_TODO: Add parameter description\r
-  @param CallbackData    EDES_TODO: Add parameter description\r
+  @param UpdatePageId    The form ID. It also spefies the legacy device type.\r
+  @param CallbackData    The BMM context data.\r
 \r
-  @return EDES_TODO: Add description for return value\r
 \r
 **/\r
 VOID\r
@@ -1159,8 +1134,8 @@ UpdateSetLegacyDeviceOrderPage (
   case FORM_SET_FD_ORDER_ID:\r
     OptionMenu  = (BM_MENU_OPTION *) &LegacyFDMenu;\r
     Key         = (UINT16) LEGACY_FD_QUESTION_ID;\r
-    TypeStr     = StrFloppy;\r
-    TypeStrHelp = StrFloppyHelp;\r
+    TypeStr     = STR_FLOPPY;\r
+    TypeStrHelp = STR_FLOPPY_HELP;\r
     BbsType     = BBS_FLOPPY;\r
     LegacyOrder = CallbackData->BmmFakeNvData.LegacyFD;\r
     OldData     = CallbackData->BmmOldFakeNVData.LegacyFD;\r
@@ -1169,8 +1144,8 @@ UpdateSetLegacyDeviceOrderPage (
   case FORM_SET_HD_ORDER_ID:\r
     OptionMenu  = (BM_MENU_OPTION *) &LegacyHDMenu;\r
     Key         = (UINT16) LEGACY_HD_QUESTION_ID;\r
-    TypeStr     = StrHardDisk;\r
-    TypeStrHelp = StrHardDiskHelp;\r
+    TypeStr     = STR_HARDDISK;\r
+    TypeStrHelp = STR_HARDDISK_HELP;\r
     BbsType     = BBS_HARDDISK;\r
     LegacyOrder = CallbackData->BmmFakeNvData.LegacyHD;\r
     OldData     = CallbackData->BmmOldFakeNVData.LegacyHD;\r
@@ -1179,8 +1154,8 @@ UpdateSetLegacyDeviceOrderPage (
   case FORM_SET_CD_ORDER_ID:\r
     OptionMenu  = (BM_MENU_OPTION *) &LegacyCDMenu;\r
     Key         = (UINT16) LEGACY_CD_QUESTION_ID;\r
-    TypeStr     = StrCDROM;\r
-    TypeStrHelp = StrCDROMHelp;\r
+    TypeStr     = STR_CDROM;\r
+    TypeStrHelp = STR_CDROM_HELP;\r
     BbsType     = BBS_CDROM;\r
     LegacyOrder = CallbackData->BmmFakeNvData.LegacyCD;\r
     OldData     = CallbackData->BmmOldFakeNVData.LegacyCD;\r
@@ -1189,8 +1164,8 @@ UpdateSetLegacyDeviceOrderPage (
   case FORM_SET_NET_ORDER_ID:\r
     OptionMenu  = (BM_MENU_OPTION *) &LegacyNETMenu;\r
     Key         = (UINT16) LEGACY_NET_QUESTION_ID;\r
-    TypeStr     = StrNET;\r
-    TypeStrHelp = StrNETHelp;\r
+    TypeStr     = STR_NET;\r
+    TypeStrHelp = STR_NET_HELP;\r
     BbsType     = BBS_EMBED_NETWORK;\r
     LegacyOrder = CallbackData->BmmFakeNvData.LegacyNET;\r
     OldData     = CallbackData->BmmOldFakeNVData.LegacyNET;\r
@@ -1199,8 +1174,8 @@ UpdateSetLegacyDeviceOrderPage (
   case FORM_SET_BEV_ORDER_ID:\r
     OptionMenu  = (BM_MENU_OPTION *) &LegacyBEVMenu;\r
     Key         = (UINT16) LEGACY_BEV_QUESTION_ID;\r
-    TypeStr     = StrBEV;\r
-    TypeStrHelp = StrBEVHelp;\r
+    TypeStr     = STR_BEV;\r
+    TypeStrHelp = STR_BEV_HELP;\r
     BbsType     = BBS_BEV_DEVICE;\r
     LegacyOrder = CallbackData->BmmFakeNvData.LegacyBEV;\r
     OldData     = CallbackData->BmmOldFakeNVData.LegacyBEV;\r
@@ -1210,7 +1185,7 @@ UpdateSetLegacyDeviceOrderPage (
 \r
   CreateMenuStringToken (CallbackData, CallbackData->BmmHiiHandle, OptionMenu);\r
 \r
-  IfrOptionList = EfiAllocateZeroPool (sizeof (IFR_OPTION) * (OptionMenu->MenuNumber + 1));\r
+  IfrOptionList = AllocateZeroPool (sizeof (IFR_OPTION) * (OptionMenu->MenuNumber + 1));\r
   if (NULL == IfrOptionList) {\r
     return ;\r
   }\r
@@ -1236,7 +1211,7 @@ UpdateSetLegacyDeviceOrderPage (
   // Get Device Order from variable\r
   //\r
   VarData = BdsLibGetVariableAndSize (\r
-              VarLegacyDevOrder,\r
+              VAR_LEGACY_DEV_ORDER,\r
               &EfiLegacyDevOrderGuid,\r
               &VarSize\r
               );\r
@@ -1296,7 +1271,7 @@ UpdateSetLegacyDeviceOrderPage (
   CopyMem (OldData, LegacyOrder, 100);\r
 \r
   if (IfrOptionList != NULL) {\r
-    SafeFreePool (IfrOptionList);\r
+    FreePool (IfrOptionList);\r
     IfrOptionList = NULL;\r
   }\r
 \r
@@ -1304,12 +1279,10 @@ UpdateSetLegacyDeviceOrderPage (
 }\r
 \r
 /**\r
-  EDES_TODO: Add function description.\r
-\r
-  @param Private         EDES_TODO: Add parameter description\r
-  @param NewPageId       EDES_TODO: Add parameter description\r
+  Dispatch the display to the next page based on NewPageId.\r
 \r
-  @return EDES_TODO: Add description for return value\r
+  @param Private         The BMM context data.\r
+  @param NewPageId       The original page ID.\r
 \r
 **/\r
 VOID\r