]> git.proxmox.com Git - mirror_edk2.git/commitdiff
ShellPkg: Move mHandleParsingHiiHandle init out of the constructor
authorChris Phillips <chrisp@hp.com>
Tue, 19 Aug 2014 23:15:22 +0000 (23:15 +0000)
committerjcarsey <jcarsey@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 19 Aug 2014 23:15:22 +0000 (23:15 +0000)
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Chris Phillips <chrisp@hp.com>
Signed-off-by: Eugene Cohen <eugene@hp.com>
Reviewed-by: Jaben Carsey <jaben.carsey@intel.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@15841 6f19259b-4bc3-4df7-8a09-765794883524

ShellPkg/Library/UefiHandleParsingLib/UefiHandleParsingLib.c

index f361f3a2749511554a65c7ffa245c26edb90e214..acc8a29796bb9af24fcc6c8496513904f9e8eafd 100644 (file)
@@ -16,7 +16,7 @@
 #include "UefiHandleParsingLib.h"\r
 #include "IndustryStandard/Acpi10.h"\r
 \r
-EFI_HANDLE        mHandleParsingHiiHandle;\r
+EFI_HANDLE        mHandleParsingHiiHandle = NULL;\r
 HANDLE_INDEX_LIST mHandleList = {{{NULL,NULL},0,0},0};\r
 GUID_INFO_BLOCK   *GuidList;\r
 UINTN             GuidListCount;\r
@@ -102,12 +102,23 @@ HandleParsingLibConstructor (
   GuidListCount = 0;\r
   GuidList      = NULL;\r
 \r
-  mHandleParsingHiiHandle = HiiAddPackages (&gHandleParsingHiiGuid, gImageHandle, UefiHandleParsingLibStrings, NULL);\r
+  //\r
+  // Do nothing with mHandleParsingHiiHandle.  Initialize HII as needed.\r
+  //\r
+  return (EFI_SUCCESS);\r
+}\r
+\r
+/** \r
+  Initialization function for HII packages.\r
\r
+**/\r
+VOID\r
+HandleParsingHiiInit (VOID)\r
+{\r
   if (mHandleParsingHiiHandle == NULL) {\r
-    return (EFI_DEVICE_ERROR);\r
+    mHandleParsingHiiHandle = HiiAddPackages (&gHandleParsingHiiGuid, gImageHandle, UefiHandleParsingLibStrings, NULL);\r
+    ASSERT (mHandleParsingHiiHandle != NULL);\r
   }\r
-\r
-  return (EFI_SUCCESS);\r
 }\r
 \r
 /**\r
@@ -166,6 +177,8 @@ LoadedImageProtocolDumpInformation(
     return (CatSPrint(NULL, L"LoadedImage"));\r
   }\r
 \r
+  HandleParsingHiiInit();\r
+\r
   Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_LI_DUMP_MAIN), NULL);\r
   RetVal = AllocateZeroPool (PcdGet16 (PcdShellPrintBufferSize));\r
   if (Temp == NULL || RetVal == NULL) {\r
@@ -242,6 +255,8 @@ GraphicsOutputProtocolDumpInformation(
     return (CatSPrint(NULL, L"GraphicsOutput"));\r
   }\r
 \r
+  HandleParsingHiiInit();\r
+\r
   Temp = HiiGetString(mHandleParsingHiiHandle, STRING_TOKEN(STR_GOP_DUMP_MAIN), NULL);\r
   RetVal = AllocateZeroPool (PcdGet16 (PcdShellPrintBufferSize));\r
   if (Temp == NULL || RetVal == NULL) {\r
@@ -322,6 +337,8 @@ PciRootBridgeIoDumpInformation(
     return (CatSPrint(NULL, L"PciRootBridgeIo"));\r
   }\r
 \r
+  HandleParsingHiiInit();\r
+\r
   Status = gBS->HandleProtocol(\r
     TheHandle,\r
     &gEfiPciRootBridgeIoProtocolGuid,\r
@@ -445,6 +462,8 @@ TxtOutProtocolDumpInformation(
     return (NULL);\r
   }\r
 \r
+  HandleParsingHiiInit();\r
+\r
   RetVal  = NULL;\r
   Size    = 0;\r
 \r
@@ -883,6 +902,8 @@ AddNewGuidNameMapping(
   CONST GUID_INFO_BLOCK *Temp;\r
   EFI_STRING_ID         NameID;\r
 \r
+  HandleParsingHiiInit();\r
+\r
   if (Guid == NULL || TheName == NULL){\r
     return (EFI_INVALID_PARAMETER);\r
   }\r
@@ -919,6 +940,8 @@ GetStringNameFromGuid(
 {\r
   CONST GUID_INFO_BLOCK *Id;\r
 \r
+  HandleParsingHiiInit();\r
+\r
   Id = InternalShellGetNodeFromGuid(Guid);\r
   return (HiiGetString(mHandleParsingHiiHandle, Id==NULL?STRING_TOKEN(STR_UNKNOWN_DEVICE):Id->StringId, Lang));\r
 }\r
@@ -986,6 +1009,8 @@ GetGuidFromStringName(
   CHAR16                     *String;\r
   UINTN                  LoopCount;\r
 \r
+  HandleParsingHiiInit();\r
+\r
   ASSERT(Guid != NULL);\r
   if (Guid == NULL) {\r
     return (EFI_INVALID_PARAMETER);\r