+ ExMapTable = PeiPcdDb->Init.ExMapTable;\r
+\r
+ Found = FALSE;\r
+ //\r
+ // Locate the GUID in ExMapTable first.\r
+ //\r
+ for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {\r
+ if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {\r
+ Found = TRUE;\r
+ break;\r
+ }\r
+ }\r
+\r
+ if (Found) {\r
+ if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {\r
+ *TokenNumber = ExMapTable[i].ExTokenNumber;\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
+ for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++) {\r
+ if (ExMapTable[i].ExTokenNumber == *TokenNumber) {\r
+ i++;\r
+ if (i == PEI_EXMAPPING_TABLE_SIZE) {\r
+ //\r
+ // Exceed the length of ExMap Table\r
+ //\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
+ return EFI_SUCCESS;\r
+ }\r
+ if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {\r
+ *TokenNumber = ExMapTable[i].ExTokenNumber;\r
+ return EFI_SUCCESS;\r
+ } else {\r
+ *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
+ return EFI_SUCCESS;\r
+ }\r
+ }\r
+ }\r
+ return EFI_NOT_FOUND;\r
+ }\r
+ }\r
+\r
+ return EFI_NOT_FOUND;\r
+}\r
+\r
+\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+PeiPcdGetNextTokenSpace (\r
+ IN OUT CONST EFI_GUID **Guid\r
+ )\r
+{\r
+ UINTN GuidTableIdx;\r
+ EFI_GUID *MatchGuid;\r
+ PEI_PCD_DATABASE *PeiPcdDb;\r
+ DYNAMICEX_MAPPING *ExMapTable;\r
+ UINTN i;\r
+ BOOLEAN Found;\r
+\r
+ if (!FeaturePcdGet (PcdPeiPcdDatabaseTraverseEnabled)) {\r
+ return EFI_UNSUPPORTED;\r
+ }\r
+\r
+ ASSERT (Guid != NULL);\r
+\r
+ if (PEI_EXMAP_TABLE_EMPTY) {\r
+ if (*Guid != NULL) {\r
+ return EFI_NOT_FOUND;\r
+ } else {\r
+ return EFI_SUCCESS;\r