MdeModulePkg:Change the type of BootNext
authorDandan Bi <dandan.bi@intel.com>
Wed, 6 Jan 2016 00:55:12 +0000 (00:55 +0000)
committerdandanbi <dandanbi@Edk2>
Wed, 6 Jan 2016 00:55:12 +0000 (00:55 +0000)
Currently the invalid boot next set to the number of boot option,
when add a new boot option,also need update the boot next value,
otherwise it will be incorrect.Now set the type of BootNext value
to UINT32,the number out of the range of UINT16 means it is an
invalid BootNext Value.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Eric Dong <eric.dong@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19591 6f19259b-4bc3-4df7-8a09-765794883524

MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenance.c
MdeModulePkg/Library/BootMaintenanceManagerLib/BootMaintenanceManager.h
MdeModulePkg/Library/BootMaintenanceManagerLib/FormGuid.h
MdeModulePkg/Library/BootMaintenanceManagerLib/UpdatePage.c
MdeModulePkg/Library/BootMaintenanceManagerLib/Variable.c

index 55c294dd73bff155d3176631c30e617532ecde3d..2d52f9bac3929ba2b6c4ec4a9a31b8ab5a081d4c 100644 (file)
@@ -1295,7 +1295,7 @@ InitializeBmmConfig (
   //\r
   // Initialize data which located in BMM main page\r
   //\r
-  CallbackData->BmmFakeNvData.BootNext = (UINT16) (BootOptionMenu.MenuNumber);\r
+  CallbackData->BmmFakeNvData.BootNext = NONE_BOOTNEXT_VALUE;\r
   for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
     NewMenuEntry    = BOpt_GetMenuEntry (&BootOptionMenu, Index);\r
     NewLoadContext  = (BM_LOAD_CONTEXT *) NewMenuEntry->VariableContext;\r
index 6934a692a6e91285d99ee1feea8916181b960663..24526e1096757ffbc945086856a2376c97a76be2 100644 (file)
@@ -233,6 +233,8 @@ typedef enum _TYPE_OF_TERMINAL {
 \r
 #define STRING_DEPOSITORY_NUMBER        8\r
 \r
+#define NONE_BOOTNEXT_VALUE             (0xFFFF + 1)\r
+\r
 ///\r
 /// Serial Ports attributes, first one is the value for\r
 /// return from callback function, stringtoken is used to\r
index 3e1990dfc6078b9aaeb9a8d2bfa58dc7be87a2a5..cf14b40083d456f0b219acf4cfacf6605dd2c33c 100644 (file)
@@ -103,7 +103,7 @@ typedef struct {
   // for Timeout, BootNext, Variables respectively\r
   //\r
   UINT16  BootTimeOut;\r
-  UINT16  BootNext;\r
+  UINT32  BootNext;\r
 \r
   //\r
   // This is the COM1 Attributes value storage\r
index 78ace0c13512d73662754ff55196066e3a9249ae..cd1756aa588a677d669b83a553201384f2520550 100644 (file)
@@ -686,7 +686,7 @@ UpdateBootNextPage (
     OptionsOpCodeHandle = HiiAllocateOpCodeHandle ();\r
     ASSERT (OptionsOpCodeHandle != NULL);\r
 \r
-    CallbackData->BmmFakeNvData.BootNext = (UINT16) (BootOptionMenu.MenuNumber);\r
+    CallbackData->BmmFakeNvData.BootNext = NONE_BOOTNEXT_VALUE;\r
 \r
     for (Index = 0; Index < BootOptionMenu.MenuNumber; Index++) {\r
       NewMenuEntry    = BOpt_GetMenuEntry (&BootOptionMenu, Index);\r
@@ -697,7 +697,7 @@ UpdateBootNextPage (
           OptionsOpCodeHandle,\r
           NewMenuEntry->DisplayStringToken,\r
           EFI_IFR_OPTION_DEFAULT,\r
-          EFI_IFR_TYPE_NUM_SIZE_16,\r
+          EFI_IFR_TYPE_NUM_SIZE_32,\r
           Index\r
           );\r
         CallbackData->BmmFakeNvData.BootNext = Index;\r
@@ -706,27 +706,27 @@ UpdateBootNextPage (
           OptionsOpCodeHandle,\r
           NewMenuEntry->DisplayStringToken,\r
           0,\r
-          EFI_IFR_TYPE_NUM_SIZE_16,\r
+          EFI_IFR_TYPE_NUM_SIZE_32,\r
           Index\r
           );\r
       }\r
     }\r
 \r
-    if (CallbackData->BmmFakeNvData.BootNext == Index) {\r
+    if (CallbackData->BmmFakeNvData.BootNext == NONE_BOOTNEXT_VALUE) {\r
       HiiCreateOneOfOptionOpCode (\r
         OptionsOpCodeHandle,\r
         STRING_TOKEN (STR_NONE),\r
         EFI_IFR_OPTION_DEFAULT,\r
-        EFI_IFR_TYPE_NUM_SIZE_16,\r
-        Index\r
+        EFI_IFR_TYPE_NUM_SIZE_32,\r
+        NONE_BOOTNEXT_VALUE\r
         );\r
     } else {\r
       HiiCreateOneOfOptionOpCode (\r
         OptionsOpCodeHandle,\r
         STRING_TOKEN (STR_NONE),\r
         0,\r
-        EFI_IFR_TYPE_NUM_SIZE_16,\r
-        Index\r
+        EFI_IFR_TYPE_NUM_SIZE_32,\r
+        NONE_BOOTNEXT_VALUE\r
         );\r
     }      \r
 \r
@@ -738,7 +738,7 @@ UpdateBootNextPage (
       STRING_TOKEN (STR_BOOT_NEXT),\r
       STRING_TOKEN (STR_BOOT_NEXT_HELP),\r
       0,\r
-      EFI_IFR_NUMERIC_SIZE_2,\r
+      EFI_IFR_NUMERIC_SIZE_4,\r
       OptionsOpCodeHandle,\r
       NULL\r
       );\r
index cd2da4a905c4392c06a0959d531d8a693f3c630a..a276caed05c4f3a76a87e0d29356ed3349ca5f77 100644 (file)
@@ -868,7 +868,7 @@ Var_UpdateBootNext (
     NewLoadContext->IsBootNext  = FALSE;\r
   }\r
 \r
-  if (CurrentFakeNVMap->BootNext == BootOptionMenu.MenuNumber) {\r
+  if (CurrentFakeNVMap->BootNext == NONE_BOOTNEXT_VALUE) {\r
     EfiLibDeleteVariable (L"BootNext", &gEfiGlobalVariableGuid);\r
     return EFI_SUCCESS;\r
   }\r