]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Pei/Service.c
Add in HII enable support for PCD.
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Pei / Service.c
index 2de061bdb061f1cf1bc0be11560e17dce50ec88d..0574ae40428a108c39a0f3aeb9c3efa6e3f89839 100644 (file)
@@ -148,7 +148,6 @@ GetHiiVariable (
   ASSERT_EFI_ERROR (Status);\r
 \r
   Size = 0;\r
-\r
   Status = VariablePpi->PeiGetVariable (\r
                           GetPeiServicesTablePointer (),\r
                           VariableName,\r
@@ -157,25 +156,30 @@ GetHiiVariable (
                           &Size,\r
                           NULL\r
                             );\r
-  ASSERT (Status == EFI_BUFFER_TOO_SMALL);\r
+  if (Status == EFI_BUFFER_TOO_SMALL) {\r
 \r
-  Status = PeiServicesAllocatePool (Size, &Buffer);\r
-  ASSERT_EFI_ERROR (Status);\r
 \r
-  Status = VariablePpi->PeiGetVariable (\r
-                            GetPeiServicesTablePointer (),\r
-                            (UINT16 *) VariableName,\r
-                            (EFI_GUID *) VariableGuid,\r
-                            NULL,\r
-                            &Size,\r
-                            Buffer\r
-                            );\r
-  ASSERT_EFI_ERROR (Status);\r
+    Status = PeiServicesAllocatePool (Size, &Buffer);\r
+    ASSERT_EFI_ERROR (Status);\r
 \r
-  *VariableSize = Size;\r
-  *VariableData = Buffer;\r
+    Status = VariablePpi->PeiGetVariable (\r
+                              GetPeiServicesTablePointer (),\r
+                              (UINT16 *) VariableName,\r
+                              (EFI_GUID *) VariableGuid,\r
+                              NULL,\r
+                              &Size,\r
+                              Buffer\r
+                              );\r
+    ASSERT_EFI_ERROR (Status);\r
+\r
+    *VariableSize = Size;\r
+    *VariableData = Buffer;\r
+\r
+    return EFI_SUCCESS;\r
+  } else {\r
+    return EFI_NOT_FOUND;\r
+  }\r
 \r
-  return EFI_SUCCESS;\r
 }\r
 \r
 \r
@@ -454,10 +458,17 @@ GetWorker (
       Name = &StringTable[VariableHead->StringIndex];\r
 \r
       Status = GetHiiVariable (Guid, Name, &Data, &DataSize);\r
-      ASSERT_EFI_ERROR (Status);\r
-      ASSERT (DataSize >= (UINTN) (VariableHead->Offset + Size));\r
 \r
-      return (VOID *) ((UINT8 *) Data + VariableHead->Offset);\r
+      if (Status == EFI_SUCCESS) {\r
+        ASSERT (DataSize >= (UINTN) (VariableHead->Offset + Size));\r
+        return (VOID *) ((UINT8 *) Data + VariableHead->Offset);\r
+      } else {\r
+        //\r
+        // BugBug: Need to support default value. The current implementation\r
+        // will return a memory buffer with ALL ZERO.\r
+        // \r
+        return AllocateZeroPool (Size);\r
+      }\r
     }\r
 \r
     case PCD_TYPE_DATA:\r