]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Pei/Pcd.c
1) remove some dead code from WinNtBusDriver.c
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Pei / Pcd.c
index b41d3ed09b0a9332ab5338d39a870a5bec761893..34af220f6686ded58515fd20fb4aa9c2b33ea5af 100644 (file)
@@ -169,6 +169,13 @@ PeiPcdGetSize (
   IN UINTN             TokenNumber\r
   )\r
 {\r
+  //\r
+  // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER.\r
+  // We have to decrement TokenNumber by 1 to make it usable\r
+  // as the array index.\r
+  //\r
+  TokenNumber--;\r
+\r
   ASSERT (TokenNumber < PEI_LOCAL_TOKEN_NUMBER);\r
 \r
   return GetPcdDatabase()->Init.SizeTable[TokenNumber];\r
@@ -559,10 +566,10 @@ PeiPcdGetNextToken (
   return EFI_SUCCESS;\r
 }\r
 \r
-EFI_GUID *\r
+EFI_STATUS\r
 EFIAPI\r
 PeiPcdGetNextTokenSpaceGuid (\r
-  IN CONST EFI_GUID               *Guid\r
+  IN OUT CONST EFI_GUID               **Guid\r
   )\r
 {\r
   UINTN               GuidTableIdx;\r
@@ -572,9 +579,17 @@ PeiPcdGetNextTokenSpaceGuid (
   UINTN               i;\r
   BOOLEAN             Found;\r
 \r
-  if (PEI_EXMAP_TABLE_EMPTY) {\r
-    return NULL;\r
-  }\r
+   if (*Guid == NULL) {\r
+    if (PEI_EXMAP_TABLE_EMPTY) {\r
+      return EFI_SUCCESS;\r
+    } else {\r
+      //\r
+      // return the first Token Space Guid.\r
+      //\r
+      *Guid = &PeiPcdDb->Init.GuidTable[ExMapTable[0].ExGuidIndex];\r
+      return EFI_SUCCESS;\r
+    }\r
+   }\r
 \r
   //\r
   // Assume PCD Database AutoGen tool is sorting the ExMap based on the following order\r
@@ -583,10 +598,10 @@ PeiPcdGetNextTokenSpaceGuid (
   //\r
   PeiPcdDb = GetPcdDatabase ();\r
 \r
-  MatchGuid = ScanGuid (PeiPcdDb->Init.GuidTable, sizeof(PeiPcdDb->Init.GuidTable), Guid);\r
+  MatchGuid = ScanGuid (PeiPcdDb->Init.GuidTable, sizeof(PeiPcdDb->Init.GuidTable), *Guid);\r
 \r
   if (MatchGuid == NULL) {\r
-    return NULL;\r
+    return EFI_NOT_FOUND;\r
   }\r
   \r
   GuidTableIdx = MatchGuid - PeiPcdDb->Init.GuidTable;\r
@@ -604,16 +619,13 @@ PeiPcdGetNextTokenSpaceGuid (
   if (Found) {\r
     for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++ ) {\r
       if (ExMapTable[i].ExGuidIndex != GuidTableIdx ) {\r
-        if (i < PEI_EXMAPPING_TABLE_SIZE) {\r
-          return &PeiPcdDb->Init.GuidTable[ExMapTable[i].ExGuidIndex];\r
-        } else {\r
-          return NULL;\r
-        }\r
+        *Guid = &PeiPcdDb->Init.GuidTable[ExMapTable[i].ExGuidIndex];\r
+        return EFI_SUCCESS;\r
       }\r
     }\r
   }\r
 \r
-  return NULL;\r
+  return EFI_NOT_FOUND;\r
 \r
 }\r
 \r