]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/PCD/Dxe/Service.c
Add Feature Flag PcdDxePcdDatabaseTraverseEnabled and PcdPeiPcdDatabaseTraverseEnabled
[mirror_edk2.git] / EdkModulePkg / Universal / PCD / Dxe / Service.c
index 613d8c84d1528aa5e20a14613b5bfc6d7b372f6e..a2706d0bd3949c166845d50ead7f86bc16a1297e 100644 (file)
@@ -61,12 +61,20 @@ GetWorker (
 \r
   TmpTokenNumber = TokenNumber;\r
   \r
-  ASSERT (TokenNumber < PCD_TOTAL_TOKEN_NUMBER);\r
+  //\r
+  // PCD_TOTAL_TOKEN_NUMBER is a auto-generated constant.\r
+  // It could be zero. EBC compiler is very choosy. It may\r
+  // report warning. So we add 1 in each size of the \r
+  // comparison.\r
+  //\r
+  ASSERT (TokenNumber + 1 < PCD_TOTAL_TOKEN_NUMBER + 1);\r
 \r
   ASSERT ((GetSize == DxePcdGetSize (TokenNumber + 1)) || (GetSize == 0));\r
 \r
-  \r
-  IsPeiDb = (TokenNumber < PEI_LOCAL_TOKEN_NUMBER) ? TRUE : FALSE;\r
+  // EBC compiler is very choosy. It may report warning about comparison\r
+  // between UINTN and 0 . So we add 1 in each size of the \r
+  // comparison.\r
+  IsPeiDb = (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1) ? TRUE : FALSE;\r
 \r
   LocalTokenNumberTable  = IsPeiDb ? mPcdDatabase->PeiDb.Init.LocalTokenNumberTable : \r
                                      mPcdDatabase->DxeDb.Init.LocalTokenNumberTable;\r
@@ -362,11 +370,12 @@ BuildPcdDxeDataBase (
   // Initialized the Callback Function Table\r
   //\r
 \r
-  if (PCD_TOTAL_TOKEN_NUMBER != 0) {\r
-    mCallbackFnTable = AllocateZeroPool (PCD_TOTAL_TOKEN_NUMBER * sizeof (LIST_ENTRY));\r
-  }\r
+  mCallbackFnTable = AllocateZeroPool (PCD_TOTAL_TOKEN_NUMBER * sizeof (LIST_ENTRY));\r
   \r
-  for (Idx = 0; Idx < PCD_TOTAL_TOKEN_NUMBER; Idx++) {\r
+  // EBC compiler is very choosy. It may report warning about comparison\r
+  // between UINTN and 0 . So we add 1 in each size of the \r
+  // comparison.\r
+  for (Idx = 0; Idx + 1 < PCD_TOTAL_TOKEN_NUMBER + 1; Idx++) {\r
     InitializeListHead (&mCallbackFnTable[Idx]);\r
   }\r
     \r
@@ -390,7 +399,7 @@ GetHiiVariable (
   Size = 0;\r
   Buffer = NULL;\r
   \r
-  Status = EfiGetVariable (\r
+  Status = gRT->GetVariable (\r
     (UINT16 *)VariableName,\r
     VariableGuid,\r
     NULL,\r
@@ -403,7 +412,7 @@ GetHiiVariable (
 \r
     ASSERT (Buffer != NULL);\r
 \r
-    Status = EfiGetVariable (\r
+    Status = gRT->GetVariable (\r
       VariableName,\r
       VariableGuid,\r
       NULL,\r
@@ -566,19 +575,29 @@ SetWorker (
 \r
   TmpTokenNumber = TokenNumber;\r
   \r
-  ASSERT (TokenNumber < PCD_TOTAL_TOKEN_NUMBER);\r
+  // EBC compiler is very choosy. It may report warning about comparison\r
+  // between UINTN and 0 . So we add 1 in each size of the \r
+  // comparison.\r
+\r
+  ASSERT (TokenNumber + 1 < PCD_TOTAL_TOKEN_NUMBER + 1);\r
 \r
   if (!PtrType) {\r
     ASSERT (*Size == DxePcdGetSize (TokenNumber + 1));\r
   }\r
   \r
-  IsPeiDb = (TokenNumber < PEI_LOCAL_TOKEN_NUMBER) ? TRUE : FALSE;\r
+  // EBC compiler is very choosy. It may report warning about comparison\r
+  // between UINTN and 0 . So we add 1 in each size of the \r
+  // comparison.\r
+  IsPeiDb = (TokenNumber + 1 < PEI_LOCAL_TOKEN_NUMBER + 1) ? TRUE : FALSE;\r
 \r
   LocalTokenNumberTable  = IsPeiDb ? mPcdDatabase->PeiDb.Init.LocalTokenNumberTable : \r
                                      mPcdDatabase->DxeDb.Init.LocalTokenNumberTable;\r
 \r
-  if ((TokenNumber < PEI_NEX_TOKEN_NUMBER) ||\r
-      (TokenNumber >= PEI_LOCAL_TOKEN_NUMBER || TokenNumber < (PEI_LOCAL_TOKEN_NUMBER + DXE_NEX_TOKEN_NUMBER))) {\r
+  // EBC compiler is very choosy. It may report warning about comparison\r
+  // between UINTN and 0 . So we add 1 in each size of the \r
+  // comparison.\r
+  if ((TokenNumber + 1 < PEI_NEX_TOKEN_NUMBER + 1) ||\r
+      (TokenNumber + 1 >= PEI_LOCAL_TOKEN_NUMBER + 1 || TokenNumber + 1 < (PEI_LOCAL_TOKEN_NUMBER + DXE_NEX_TOKEN_NUMBER + 1))) {\r
     InvokeCallbackOnSet (0, NULL, TokenNumber + 1, Data, *Size);\r
   }\r
 \r
@@ -755,7 +774,7 @@ SetHiiVariable (
 \r
   Size = 0;\r
 \r
-  Status = EfiGetVariable (\r
+  Status = gRT->GetVariable (\r
     (UINT16 *)VariableName,\r
     VariableGuid,\r
     &Attribute,\r
@@ -769,7 +788,7 @@ SetHiiVariable (
 \r
     ASSERT (Buffer != NULL);\r
 \r
-    Status = EfiGetVariable (\r
+    Status = gRT->GetVariable (\r
       VariableName,\r
       VariableGuid,\r
       &Attribute,\r
@@ -781,7 +800,7 @@ SetHiiVariable (
 \r
     CopyMem ((UINT8 *)Buffer + Offset, Data, DataSize);\r
 \r
-    Status = EfiSetVariable (\r
+    Status = gRT->SetVariable (\r
               VariableName,\r
               VariableGuid,\r
               Attribute,\r
@@ -983,7 +1002,10 @@ GetPtrTypeSize (
   BOOLEAN     IsPeiDb;\r
   UINT32      *LocalTokenNumberTable;\r
 \r
-  IsPeiDb = (BOOLEAN) (LocalTokenNumberTableIdx < PEI_LOCAL_TOKEN_NUMBER);\r
+  // EBC compiler is very choosy. It may report warning about comparison\r
+  // between UINTN and 0 . So we add 1 in each size of the \r
+  // comparison.\r
+  IsPeiDb = (BOOLEAN) (LocalTokenNumberTableIdx + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);\r
 \r
 \r
   if (IsPeiDb) {\r
@@ -1055,7 +1077,10 @@ SetPtrTypeSize (
   BOOLEAN     IsPeiDb;\r
   UINT32      *LocalTokenNumberTable;\r
 \r
-  IsPeiDb = (BOOLEAN) (LocalTokenNumberTableIdx < PEI_LOCAL_TOKEN_NUMBER);\r
+  // EBC compiler is very choosy. It may report warning about comparison\r
+  // between UINTN and 0 . So we add 1 in each size of the \r
+  // comparison.\r
+  IsPeiDb = (BOOLEAN) (LocalTokenNumberTableIdx + 1 < PEI_LOCAL_TOKEN_NUMBER + 1);\r
 \r
   if (IsPeiDb) {\r
     LocalTokenNumberTable = mPcdDatabase->PeiDb.Init.LocalTokenNumberTable;\r