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
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
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
//\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
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