]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Fix bugs in GetNextTokenSpace and GetNextToken
authorqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 6 Jul 2006 11:42:25 +0000 (11:42 +0000)
committerqwang12 <qwang12@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 6 Jul 2006 11:42:25 +0000 (11:42 +0000)
Fix bugs in Pcd Build tool generation for ExMap

Fix a few other bugs.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@800 6f19259b-4bc3-4df7-8a09-765794883524

EdkModulePkg/Universal/PCD/Dxe/Pcd.c
EdkModulePkg/Universal/PCD/Dxe/Service.h
EdkModulePkg/Universal/PCD/Pei/Pcd.c
EdkModulePkg/Universal/PCD/Pei/Service.h
Tools/Source/GenBuild/org/tianocore/build/pcd/action/CollectPCDAction.java

index 3e35363a3b345f679bc867de09664cd1eaebcc99..b78752df293027cd11e6f868ac58e35b47001416 100644 (file)
@@ -53,7 +53,8 @@ PCD_PROTOCOL mPcdInstance = {
 \r
   DxeRegisterCallBackOnSet,\r
   DxeUnRegisterCallBackOnSet,\r
 \r
   DxeRegisterCallBackOnSet,\r
   DxeUnRegisterCallBackOnSet,\r
-  DxePcdGetNextToken\r
+  DxePcdGetNextToken,\r
+  DxePcdGetNextTokenSpace\r
 };\r
 \r
 \r
 };\r
 \r
 \r
@@ -505,31 +506,26 @@ DxePcdGetNextToken (
   //\r
   if (Guid == NULL) {\r
     (*TokenNumber)++;\r
   //\r
   if (Guid == NULL) {\r
     (*TokenNumber)++;\r
-    if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {\r
-      return EFI_SUCCESS;\r
-    } else {\r
-      if (*TokenNumber >= PEI_NEX_TOKEN_NUMBER &&\r
-          *TokenNumber < PEI_LOCAL_TOKEN_NUMBER) {\r
-        //\r
-        // The first Non-Ex type Token Number for DXE PCD \r
-        // database is PEI_LOCAL_TOKEN_NUMBER\r
-        //\r
-        *TokenNumber = PEI_LOCAL_TOKEN_NUMBER;\r
-        return EFI_SUCCESS;\r
-      } else if (*TokenNumber >= DXE_NEX_TOKEN_NUMBER + PEI_LOCAL_TOKEN_NUMBER) {\r
-        *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
-        return EFI_SUCCESS;\r
-      }\r
+    if (*TokenNumber > PEI_NEX_TOKEN_NUMBER &&\r
+        *TokenNumber <= PEI_LOCAL_TOKEN_NUMBER) {\r
+      //\r
+      // The first Non-Ex type Token Number for DXE PCD \r
+      // database is PEI_LOCAL_TOKEN_NUMBER\r
+      //\r
+      *TokenNumber = PEI_LOCAL_TOKEN_NUMBER;\r
+    } else if (*TokenNumber > DXE_NEX_TOKEN_NUMBER + PEI_LOCAL_TOKEN_NUMBER) {\r
+      *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
     }\r
     }\r
+    return EFI_SUCCESS;\r
   }\r
 \r
   }\r
 \r
-  if (PEI_EXMAP_TABLE_EMPTY && PEI_EXMAP_TABLE_EMPTY) {\r
-    *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;\r
+  if (PEI_EXMAP_TABLE_EMPTY && DXE_EXMAP_TABLE_EMPTY) {\r
+    *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
     return EFI_NOT_FOUND;\r
   }\r
 \r
     return EFI_NOT_FOUND;\r
   }\r
 \r
-  ExTokenNumber = *TokenNumber;\r
   if (!PEI_EXMAP_TABLE_EMPTY) {\r
   if (!PEI_EXMAP_TABLE_EMPTY) {\r
+    ExTokenNumber = *TokenNumber;\r
     ExTokenNumber = ExGetNextTokeNumber (\r
                         Guid,\r
                         ExTokenNumber,\r
     ExTokenNumber = ExGetNextTokeNumber (\r
                         Guid,\r
                         ExTokenNumber,\r
@@ -543,13 +539,14 @@ DxePcdGetNextToken (
   if ((ExTokenNumber == PCD_INVALID_TOKEN_NUMBER) &&\r
       !DXE_EXMAP_TABLE_EMPTY\r
     ) {\r
   if ((ExTokenNumber == PCD_INVALID_TOKEN_NUMBER) &&\r
       !DXE_EXMAP_TABLE_EMPTY\r
     ) {\r
+    ExTokenNumber = *TokenNumber;\r
     ExTokenNumber = ExGetNextTokeNumber (\r
                         Guid,\r
                         ExTokenNumber,\r
     ExTokenNumber = ExGetNextTokeNumber (\r
                         Guid,\r
                         ExTokenNumber,\r
-                        mPcdDatabase->PeiDb.Init.GuidTable,\r
-                        sizeof(mPcdDatabase->PeiDb.Init.GuidTable),\r
-                        mPcdDatabase->PeiDb.Init.ExMapTable,\r
-                        sizeof(mPcdDatabase->PeiDb.Init.ExMapTable)\r
+                        mPcdDatabase->DxeDb.Init.GuidTable,\r
+                        sizeof(mPcdDatabase->DxeDb.Init.GuidTable),\r
+                        mPcdDatabase->DxeDb.Init.ExMapTable,\r
+                        sizeof(mPcdDatabase->DxeDb.Init.ExMapTable)\r
                         );\r
   }\r
 \r
                         );\r
   }\r
 \r
@@ -578,19 +575,28 @@ GetDistinctTokenSpace (
   TsIdx = 0;\r
   OldGuidIndex = ExMapTable[0].ExGuidIndex;\r
   DistinctTokenSpace[TsIdx] = &GuidTable[OldGuidIndex];\r
   TsIdx = 0;\r
   OldGuidIndex = ExMapTable[0].ExGuidIndex;\r
   DistinctTokenSpace[TsIdx] = &GuidTable[OldGuidIndex];\r
-  for (Idx = 1; Idx < PEI_EXMAPPING_TABLE_SIZE; Idx++) {\r
+  for (Idx = 1; Idx < *ExMapTableSize; Idx++) {\r
     if (ExMapTable[Idx].ExGuidIndex != OldGuidIndex) {\r
       OldGuidIndex = ExMapTable[Idx].ExGuidIndex;\r
       DistinctTokenSpace[++TsIdx] = &GuidTable[OldGuidIndex];\r
     }\r
   }\r
 \r
     if (ExMapTable[Idx].ExGuidIndex != OldGuidIndex) {\r
       OldGuidIndex = ExMapTable[Idx].ExGuidIndex;\r
       DistinctTokenSpace[++TsIdx] = &GuidTable[OldGuidIndex];\r
     }\r
   }\r
 \r
-  *ExMapTableSize = TsIdx;\r
+  //\r
+  // The total number of Distinct Token Space\r
+  // is TsIdx + 1 because we use TsIdx as a index\r
+  // to the DistinctTokenSpace[]\r
+  //\r
+  *ExMapTableSize = TsIdx + 1;\r
   return DistinctTokenSpace;\r
     \r
 }\r
   \r
   return DistinctTokenSpace;\r
     \r
 }\r
   \r
-\r
+//\r
+// Just pre-allocate a memory buffer that is big enough to\r
+// host all distinct TokenSpace guid in both\r
+// PEI ExMap and DXE ExMap.\r
+//\r
 STATIC EFI_GUID *TmpTokenSpaceBuffer[PEI_EXMAPPING_TABLE_SIZE + DXE_EXMAPPING_TABLE_SIZE] = { 0 };\r
 \r
 EFI_STATUS\r
 STATIC EFI_GUID *TmpTokenSpaceBuffer[PEI_EXMAPPING_TABLE_SIZE + DXE_EXMAPPING_TABLE_SIZE] = { 0 };\r
 \r
 EFI_STATUS\r
@@ -619,7 +625,7 @@ DxePcdGetNextTokenSpace (
   }\r
   \r
   \r
   }\r
   \r
   \r
-  if (TmpTokenSpaceBuffer[0] != NULL) {\r
+  if (TmpTokenSpaceBuffer[0] == NULL) {\r
     PeiTokenSpaceTableSize = 0;\r
 \r
     if (!PEI_EXMAP_TABLE_EMPTY) {\r
     PeiTokenSpaceTableSize = 0;\r
 \r
     if (!PEI_EXMAP_TABLE_EMPTY) {\r
index 7628900596e3ae9db944bc50b84d32a8d2095bae..ff90fa5479db8df763e41f3bd324997bddf96842 100644 (file)
@@ -32,144 +32,6 @@ Module Name: Service.h
   #error "Please make sure the version of PCD Service DXE Driver and PCD DXE Database Generation Tool matches"\r
 #endif\r
 \r
   #error "Please make sure the version of PCD Service DXE Driver and PCD DXE Database Generation Tool matches"\r
 #endif\r
 \r
-\r
-typedef struct {\r
-  LIST_ENTRY              Node;\r
-  PCD_PROTOCOL_CALLBACK   CallbackFn;\r
-} CALLBACK_FN_ENTRY;\r
-\r
-#define CR_FNENTRY_FROM_LISTNODE(Record, Type, Field) _CR(Record, Type, Field)\r
-\r
-//\r
-// Internal Functions\r
-//\r
-\r
-EFI_STATUS\r
-SetValueWorker (\r
-  IN UINTN                   TokenNumber,\r
-  IN VOID                    *Data,\r
-  IN UINTN                   Size\r
-  )\r
-;\r
-\r
-EFI_STATUS\r
-SetWorker (\r
-  IN          UINTN                     TokenNumber,\r
-  IN          VOID                      *Data,\r
-  IN OUT      UINTN                     *Size,\r
-  IN          BOOLEAN                   PtrType\r
-  )\r
-;\r
-\r
-\r
-EFI_STATUS\r
-ExSetValueWorker (\r
-  IN          UINTN                ExTokenNumber,\r
-  IN          CONST EFI_GUID       *Guid,\r
-  IN          VOID                 *Data,\r
-  IN          UINTN                SetSize\r
-  )\r
-;\r
-\r
-\r
-\r
-EFI_STATUS\r
-ExSetWorker (\r
-  IN      UINTN                ExTokenNumber,\r
-  IN      CONST EFI_GUID       *Guid,\r
-  IN      VOID                 *Data,\r
-  IN OUT  UINTN                *Size,\r
-  IN      BOOLEAN              PtrType\r
-  )\r
-;\r
-\r
-\r
-VOID *\r
-GetWorker (\r
-  IN UINTN             TokenNumber,\r
-  IN UINTN             GetSize\r
-  )\r
-;\r
-\r
-VOID *\r
-ExGetWorker (\r
-  IN CONST EFI_GUID         *Guid,\r
-  IN UINTN                  ExTokenNumber,\r
-  IN UINTN                  GetSize\r
-  ) \r
-;\r
-\r
-UINT32\r
-GetSkuEnabledTokenNumber (\r
-  UINT32 LocalTokenNumber,\r
-  UINTN  Size,\r
-  BOOLEAN IsPeiDb\r
-  ) \r
-;\r
-\r
-EFI_STATUS\r
-GetHiiVariable (\r
-  IN  EFI_GUID      *VariableGuid,\r
-  IN  UINT16        *VariableName,\r
-  OUT VOID          **VariableData,\r
-  OUT UINTN         *VariableSize\r
-  )\r
-;\r
-\r
-EFI_STATUS\r
-SetHiiVariable (\r
-  IN  EFI_GUID     *VariableGuid,\r
-  IN  UINT16       *VariableName,\r
-  IN  CONST VOID   *Data,\r
-  IN  UINTN        DataSize,\r
-  IN  UINTN        Offset\r
-  )\r
-;\r
-\r
-EFI_STATUS\r
-DxeRegisterCallBackWorker (\r
-  IN  UINTN                   TokenNumber,\r
-  IN  CONST EFI_GUID          *Guid, OPTIONAL\r
-  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
-);\r
-\r
-EFI_STATUS\r
-DxeUnRegisterCallBackWorker (\r
-  IN  UINTN                   TokenNumber,\r
-  IN  CONST EFI_GUID          *Guid, OPTIONAL\r
-  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
-);\r
-\r
-VOID\r
-BuildPcdDxeDataBase (\r
-  VOID\r
-);\r
-\r
-\r
-UINTN           \r
-GetExPcdTokenNumber (\r
-  IN CONST EFI_GUID             *Guid,\r
-  IN UINT32                     ExTokenNumber\r
-  )\r
-;\r
-\r
-\r
-UINTN\r
-GetPtrTypeSize (\r
-  IN    UINTN             LocalTokenNumberTableIdx,\r
-  OUT   UINTN             *MaxSize\r
-  )\r
-;\r
-\r
-\r
-\r
-BOOLEAN\r
-SetPtrTypeSize (\r
-  IN          UINTN             LocalTokenNumberTableIdx,\r
-  IN    OUT   UINTN             *CurrentSize\r
-  )\r
-;\r
-\r
 //\r
 // Protocol Interface function declaration.\r
 //\r
 //\r
 // Protocol Interface function declaration.\r
 //\r
@@ -447,6 +309,138 @@ DxePcdGetNextToken (
   )\r
 ;\r
 \r
   )\r
 ;\r
 \r
+\r
+\r
+EFI_STATUS\r
+EFIAPI\r
+DxePcdGetNextTokenSpace (\r
+  IN OUT CONST EFI_GUID               **Guid\r
+  )\r
+;\r
+\r
+\r
+typedef struct {\r
+  LIST_ENTRY              Node;\r
+  PCD_PROTOCOL_CALLBACK   CallbackFn;\r
+} CALLBACK_FN_ENTRY;\r
+\r
+#define CR_FNENTRY_FROM_LISTNODE(Record, Type, Field) _CR(Record, Type, Field)\r
+\r
+//\r
+// Internal Functions\r
+//\r
+\r
+EFI_STATUS\r
+SetValueWorker (\r
+  IN UINTN                   TokenNumber,\r
+  IN VOID                    *Data,\r
+  IN UINTN                   Size\r
+  )\r
+;\r
+\r
+EFI_STATUS\r
+SetWorker (\r
+  IN          UINTN                     TokenNumber,\r
+  IN          VOID                      *Data,\r
+  IN OUT      UINTN                     *Size,\r
+  IN          BOOLEAN                   PtrType\r
+  )\r
+;\r
+\r
+\r
+EFI_STATUS\r
+ExSetValueWorker (\r
+  IN          UINTN                ExTokenNumber,\r
+  IN          CONST EFI_GUID       *Guid,\r
+  IN          VOID                 *Data,\r
+  IN          UINTN                SetSize\r
+  )\r
+;\r
+\r
+\r
+\r
+EFI_STATUS\r
+ExSetWorker (\r
+  IN      UINTN                ExTokenNumber,\r
+  IN      CONST EFI_GUID       *Guid,\r
+  IN      VOID                 *Data,\r
+  IN OUT  UINTN                *Size,\r
+  IN      BOOLEAN              PtrType\r
+  )\r
+;\r
+\r
+\r
+VOID *\r
+GetWorker (\r
+  IN UINTN             TokenNumber,\r
+  IN UINTN             GetSize\r
+  )\r
+;\r
+\r
+VOID *\r
+ExGetWorker (\r
+  IN CONST EFI_GUID         *Guid,\r
+  IN UINTN                  ExTokenNumber,\r
+  IN UINTN                  GetSize\r
+  ) \r
+;\r
+\r
+UINT32\r
+GetSkuEnabledTokenNumber (\r
+  UINT32 LocalTokenNumber,\r
+  UINTN  Size,\r
+  BOOLEAN IsPeiDb\r
+  ) \r
+;\r
+\r
+EFI_STATUS\r
+GetHiiVariable (\r
+  IN  EFI_GUID      *VariableGuid,\r
+  IN  UINT16        *VariableName,\r
+  OUT VOID          **VariableData,\r
+  OUT UINTN         *VariableSize\r
+  )\r
+;\r
+\r
+EFI_STATUS\r
+SetHiiVariable (\r
+  IN  EFI_GUID     *VariableGuid,\r
+  IN  UINT16       *VariableName,\r
+  IN  CONST VOID   *Data,\r
+  IN  UINTN        DataSize,\r
+  IN  UINTN        Offset\r
+  )\r
+;\r
+\r
+EFI_STATUS\r
+DxeRegisterCallBackWorker (\r
+  IN  UINTN                   TokenNumber,\r
+  IN  CONST EFI_GUID          *Guid, OPTIONAL\r
+  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
+);\r
+\r
+EFI_STATUS\r
+DxeUnRegisterCallBackWorker (\r
+  IN  UINTN                   TokenNumber,\r
+  IN  CONST EFI_GUID          *Guid, OPTIONAL\r
+  IN  PCD_PROTOCOL_CALLBACK   CallBackFunction\r
+);\r
+\r
+VOID\r
+BuildPcdDxeDataBase (\r
+  VOID\r
+);\r
+\r
+\r
+UINTN           \r
+GetExPcdTokenNumber (\r
+  IN CONST EFI_GUID             *Guid,\r
+  IN UINT32                     ExTokenNumber\r
+  )\r
+;\r
+\r
+\r
+\r
 UINTN           \r
 ExGetNextTokeNumber (\r
   IN CONST EFI_GUID    *Guid,\r
 UINTN           \r
 ExGetNextTokeNumber (\r
   IN CONST EFI_GUID    *Guid,\r
@@ -458,6 +452,23 @@ ExGetNextTokeNumber (
   )\r
 ;\r
 \r
   )\r
 ;\r
 \r
+\r
+UINTN\r
+GetPtrTypeSize (\r
+  IN    UINTN             LocalTokenNumberTableIdx,\r
+  OUT   UINTN             *MaxSize\r
+  )\r
+;\r
+\r
+\r
+\r
+BOOLEAN\r
+SetPtrTypeSize (\r
+  IN          UINTN             LocalTokenNumberTableIdx,\r
+  IN    OUT   UINTN             *CurrentSize\r
+  )\r
+;\r
+\r
 extern EFI_GUID gPcdDataBaseHobGuid;\r
 \r
 extern PCD_DATABASE * mPcdDatabase;\r
 extern EFI_GUID gPcdDataBaseHobGuid;\r
 \r
 extern PCD_DATABASE * mPcdDatabase;\r
index a2b5701f1334266c5da136d9b72d4aa6dfff617f..6d90671852690becb94a2fab62c0fc6071fed955 100644 (file)
@@ -481,16 +481,14 @@ PeiPcdGetNextToken (
     \r
   if (Guid == NULL) {\r
     (*TokenNumber)++;\r
     \r
   if (Guid == NULL) {\r
     (*TokenNumber)++;\r
-\r
-    if (*TokenNumber >= PEI_NEX_TOKEN_NUMBER) {\r
+    if (*TokenNumber > PEI_NEX_TOKEN_NUMBER) {\r
       *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
     }\r
       *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
     }\r
-    \r
+    return EFI_SUCCESS;\r
   } else {\r
   } else {\r
-\r
     if (PEI_EXMAP_TABLE_EMPTY) {\r
       *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
     if (PEI_EXMAP_TABLE_EMPTY) {\r
       *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
-      return EFI_NOT_FOUND;\r
+      return EFI_SUCCESS;\r
     }\r
     \r
     //\r
     }\r
     \r
     //\r
@@ -503,7 +501,7 @@ PeiPcdGetNextToken (
     MatchGuid = ScanGuid (PeiPcdDb->Init.GuidTable, sizeof(PeiPcdDb->Init.GuidTable), Guid);\r
 \r
     if (MatchGuid == NULL) {\r
     MatchGuid = ScanGuid (PeiPcdDb->Init.GuidTable, sizeof(PeiPcdDb->Init.GuidTable), Guid);\r
 \r
     if (MatchGuid == NULL) {\r
-      *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;\r
+      *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
       return EFI_NOT_FOUND;\r
     }\r
 \r
       return EFI_NOT_FOUND;\r
     }\r
 \r
@@ -512,6 +510,9 @@ PeiPcdGetNextToken (
     ExMapTable = PeiPcdDb->Init.ExMapTable;\r
 \r
     Found = FALSE;\r
     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
     for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {\r
       if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {\r
         Found = TRUE;\r
@@ -524,26 +525,31 @@ PeiPcdGetNextToken (
         *TokenNumber = ExMapTable[i].ExTokenNumber;\r
          return EFI_SUCCESS;\r
       }\r
         *TokenNumber = ExMapTable[i].ExTokenNumber;\r
          return EFI_SUCCESS;\r
       }\r
-      \r
-      for ( ; ExMapTable[i].ExGuidIndex == GuidTableIdx; i++) {\r
+\r
+      for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++) {\r
         if (ExMapTable[i].ExTokenNumber == *TokenNumber) {\r
           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
           if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {\r
             *TokenNumber = ExMapTable[i].ExTokenNumber;\r
             return EFI_SUCCESS;\r
           } else {\r
-            *TokenNumber = (UINTN) PCD_INVALID_TOKEN_NUMBER;\r
+            *TokenNumber = PCD_INVALID_TOKEN_NUMBER;\r
             return EFI_SUCCESS;\r
           }\r
         }\r
       }\r
             return EFI_SUCCESS;\r
           }\r
         }\r
       }\r
-\r
       return EFI_NOT_FOUND;\r
     }\r
       return EFI_NOT_FOUND;\r
     }\r
-    \r
   }\r
 \r
   }\r
 \r
-  return EFI_SUCCESS;\r
+  return EFI_NOT_FOUND;\r
 }\r
 \r
 \r
 }\r
 \r
 \r
index 4dbf7610ba74404f86ae1a4b49fdae557ad53e00..71a3d7b38f3c693bb5a75dc7537352bc0b91417c 100644 (file)
@@ -32,130 +32,6 @@ Module Name: Service.h
   #error "Please make sure the version of PCD Service PEIM and PCD PEI Database Generation Tool matches"\r
 #endif\r
 \r
   #error "Please make sure the version of PCD Service PEIM and PCD PEI Database Generation Tool matches"\r
 #endif\r
 \r
-/* Internal Function definitions */\r
-\r
-PEI_PCD_DATABASE *\r
-GetPcdDatabase (\r
-  VOID\r
-  )\r
-;\r
-\r
-\r
-EFI_STATUS\r
-SetValueWorker (\r
-  IN          UINTN              TokenNumber,\r
-  IN          VOID               *Data,\r
-  IN          UINTN              Size\r
-  )\r
-;\r
-\r
-\r
-EFI_STATUS\r
-SetWorker (\r
-  IN          UINTN              TokenNumber,\r
-  IN          VOID               *Data,\r
-  IN OUT      UINTN              *Size,\r
-  IN          BOOLEAN            PtrType\r
-  )\r
-;\r
-\r
-\r
-EFI_STATUS\r
-ExSetValueWorker (\r
-  IN          UINTN                ExTokenNumber,\r
-  IN          CONST EFI_GUID       *Guid,\r
-  IN          VOID                 *Data,\r
-  IN          UINTN                Size\r
-  )\r
-;\r
-\r
-\r
-\r
-EFI_STATUS\r
-ExSetWorker (\r
-  IN      UINTN                ExTokenNumber,\r
-  IN      CONST EFI_GUID       *Guid,\r
-  IN      VOID                 *Data,\r
-  IN OUT  UINTN                *Size,\r
-  IN      BOOLEAN              PtrType\r
-  )\r
-;\r
-\r
-\r
-\r
-VOID *\r
-GetWorker (\r
-  IN UINTN                TokenNumber,\r
-  IN UINTN                GetSize\r
-  )\r
-;\r
-\r
-\r
-\r
-VOID *\r
-ExGetWorker (\r
-  IN CONST EFI_GUID   *Guid,\r
-  IN UINTN            ExTokenNumber,\r
-  IN UINTN            GetSize\r
-  )\r
-;\r
-\r
-typedef struct {\r
-  UINTN   TokenNumber;\r
-  UINTN   Size;\r
-  UINT32  LocalTokenNumberAlias;\r
-} EX_PCD_ENTRY_ATTRIBUTE;\r
-\r
-\r
-UINTN           \r
-GetExPcdTokenNumber (\r
-  IN CONST EFI_GUID             *Guid,\r
-  IN UINTN                      ExTokenNumber\r
-  )\r
-;\r
-\r
-\r
-\r
-\r
-EFI_STATUS\r
-PeiRegisterCallBackWorker (\r
-  IN  UINTN              TokenNumber,\r
-  IN  CONST GUID         *Guid, OPTIONAL\r
-  IN  PCD_PPI_CALLBACK   CallBackFunction,\r
-  IN  BOOLEAN            Register\r
-);\r
-\r
-\r
-\r
-\r
-VOID\r
-BuildPcdDatabase (\r
-  VOID\r
-  )\r
-;\r
-\r
-\r
-\r
-\r
-UINTN\r
-GetPtrTypeSize (\r
-  IN    UINTN             LocalTokenNumberTableIdx,\r
-  OUT   UINTN             *MaxSize,\r
-  IN    PEI_PCD_DATABASE  *Database\r
-  )\r
-;\r
-\r
-\r
-\r
-BOOLEAN\r
-SetPtrTypeSize (\r
-  IN          UINTN             LocalTokenNumberTableIdx,\r
-  IN    OUT   UINTN             *CurrentSize,\r
-  IN          PEI_PCD_DATABASE  *Database\r
-  )\r
-;\r
-\r
-\r
 //\r
 // PPI Interface Implementation Declaration.\r
 //\r
 //\r
 // PPI Interface Implementation Declaration.\r
 //\r
@@ -436,6 +312,131 @@ PeiPcdGetNextTokenSpace (
   )\r
 ;\r
 \r
   )\r
 ;\r
 \r
+\r
+/* Internal Function definitions */\r
+\r
+PEI_PCD_DATABASE *\r
+GetPcdDatabase (\r
+  VOID\r
+  )\r
+;\r
+\r
+\r
+EFI_STATUS\r
+SetValueWorker (\r
+  IN          UINTN              TokenNumber,\r
+  IN          VOID               *Data,\r
+  IN          UINTN              Size\r
+  )\r
+;\r
+\r
+\r
+EFI_STATUS\r
+SetWorker (\r
+  IN          UINTN              TokenNumber,\r
+  IN          VOID               *Data,\r
+  IN OUT      UINTN              *Size,\r
+  IN          BOOLEAN            PtrType\r
+  )\r
+;\r
+\r
+\r
+EFI_STATUS\r
+ExSetValueWorker (\r
+  IN          UINTN                ExTokenNumber,\r
+  IN          CONST EFI_GUID       *Guid,\r
+  IN          VOID                 *Data,\r
+  IN          UINTN                Size\r
+  )\r
+;\r
+\r
+\r
+\r
+EFI_STATUS\r
+ExSetWorker (\r
+  IN      UINTN                ExTokenNumber,\r
+  IN      CONST EFI_GUID       *Guid,\r
+  IN      VOID                 *Data,\r
+  IN OUT  UINTN                *Size,\r
+  IN      BOOLEAN              PtrType\r
+  )\r
+;\r
+\r
+\r
+\r
+VOID *\r
+GetWorker (\r
+  IN UINTN                TokenNumber,\r
+  IN UINTN                GetSize\r
+  )\r
+;\r
+\r
+\r
+\r
+VOID *\r
+ExGetWorker (\r
+  IN CONST EFI_GUID   *Guid,\r
+  IN UINTN            ExTokenNumber,\r
+  IN UINTN            GetSize\r
+  )\r
+;\r
+\r
+typedef struct {\r
+  UINTN   TokenNumber;\r
+  UINTN   Size;\r
+  UINT32  LocalTokenNumberAlias;\r
+} EX_PCD_ENTRY_ATTRIBUTE;\r
+\r
+\r
+UINTN           \r
+GetExPcdTokenNumber (\r
+  IN CONST EFI_GUID             *Guid,\r
+  IN UINTN                      ExTokenNumber\r
+  )\r
+;\r
+\r
+\r
+\r
+\r
+EFI_STATUS\r
+PeiRegisterCallBackWorker (\r
+  IN  UINTN              TokenNumber,\r
+  IN  CONST GUID         *Guid, OPTIONAL\r
+  IN  PCD_PPI_CALLBACK   CallBackFunction,\r
+  IN  BOOLEAN            Register\r
+);\r
+\r
+\r
+\r
+\r
+VOID\r
+BuildPcdDatabase (\r
+  VOID\r
+  )\r
+;\r
+\r
+\r
+\r
+\r
+UINTN\r
+GetPtrTypeSize (\r
+  IN    UINTN             LocalTokenNumberTableIdx,\r
+  OUT   UINTN             *MaxSize,\r
+  IN    PEI_PCD_DATABASE  *Database\r
+  )\r
+;\r
+\r
+\r
+\r
+BOOLEAN\r
+SetPtrTypeSize (\r
+  IN          UINTN             LocalTokenNumberTableIdx,\r
+  IN    OUT   UINTN             *CurrentSize,\r
+  IN          PEI_PCD_DATABASE  *Database\r
+  )\r
+;\r
+\r
+\r
 extern EFI_GUID gPcdDataBaseHobGuid;\r
 \r
 extern EFI_GUID gPcdPeiCallbackFnTableHobGuid;\r
 extern EFI_GUID gPcdDataBaseHobGuid;\r
 \r
 extern EFI_GUID gPcdPeiCallbackFnTableHobGuid;\r
index 396a1af442de49f109104d008a469670b84b0a79..79d488a173c71b00671551629c4fe55e1c40a33e 100644 (file)
@@ -430,7 +430,7 @@ class GuidTable {
         // If so, return the GuidTable index.\r
         //\r
         for (int i = 0; i < al.size(); i++) {\r
         // If so, return the GuidTable index.\r
         //\r
         for (int i = 0; i < al.size(); i++) {\r
-            if (al.get(i).equals(uuid)) {\r
+            if (al.get(i).compareTo(uuid) == 0) {\r
                 return i;\r
             }\r
         }\r
                 return i;\r
             }\r
         }\r
@@ -752,7 +752,7 @@ class ExMapTable {
     }\r
 \r
     private ArrayList<ExTriplet> al;\r
     }\r
 \r
     private ArrayList<ExTriplet> al;\r
-    private ArrayList<String>    alComment;\r
+    private Map<ExTriplet, String> alComment;\r
     private String               phase;\r
     private int                  len;\r
     private int                   bodyLineNum;\r
     private String               phase;\r
     private int                  len;\r
     private int                   bodyLineNum;\r
@@ -760,7 +760,7 @@ class ExMapTable {
     public ExMapTable (String phase) {\r
         this.phase = phase;\r
         al = new ArrayList<ExTriplet>();\r
     public ExMapTable (String phase) {\r
         this.phase = phase;\r
         al = new ArrayList<ExTriplet>();\r
-        alComment = new ArrayList<String>();\r
+        alComment = new HashMap<ExTriplet, String>();\r
         bodyLineNum = 0;\r
         len = 0;\r
     }\r
         bodyLineNum = 0;\r
         len = 0;\r
     }\r
@@ -815,7 +815,7 @@ class ExMapTable {
             str += e.localTokenIdx.toString() + ", ";\r
             str += e.guidTableIdx.toString();\r
 \r
             str += e.localTokenIdx.toString() + ", ";\r
             str += e.guidTableIdx.toString();\r
 \r
-            str += "}" + " /* " + alComment.get(index) + " */" ;\r
+            str += "}" + " /* " + alComment.get(e) + " */" ;\r
 \r
             if (index != al.size() - 1) {\r
                 str += ",";\r
 \r
             if (index != al.size() - 1) {\r
                 str += ",";\r
@@ -834,9 +834,11 @@ class ExMapTable {
     public int add (int localTokenIdx, long exTokenNum, int guidTableIdx, String name) {\r
         int index = len;\r
 \r
     public int add (int localTokenIdx, long exTokenNum, int guidTableIdx, String name) {\r
         int index = len;\r
 \r
-        len++; \r
-        al.add(new ExTriplet(guidTableIdx, exTokenNum, localTokenIdx));\r
-        alComment.add(name);\r
+        len++;\r
+        ExTriplet et = new ExTriplet(guidTableIdx, exTokenNum, localTokenIdx); \r
+\r
+        al.add(et);\r
+        alComment.put(et, name);\r
 \r
         return index;\r
     }\r
 \r
         return index;\r
     }\r