]> git.proxmox.com Git - mirror_edk2.git/commitdiff
1, PeiPcdLib use EFI_PEI_PCD_PPI defined in PI 1.2 to handle dynamicEx type PCD request.
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 24 Nov 2009 03:29:57 +0000 (03:29 +0000)
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 24 Nov 2009 03:29:57 +0000 (03:29 +0000)
2, DxePcdLib use EFI_PCD_PROTOCOL defined in PI 1.2 to handle dynamicEx type PCD request.
3, There is no change for dynamic type PCD.
4, Refine the INF's comments.

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

MdePkg/Library/DxePcdLib/DxePcdLib.c
MdePkg/Library/DxePcdLib/DxePcdLib.inf
MdePkg/Library/PeiPcdLib/PeiPcdLib.c
MdePkg/Library/PeiPcdLib/PeiPcdLib.inf

index 703dd428a0ccfad3eff262e130e306848871f397..33d2e023a880b1dd15cff478530f28567bff5110 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Implementation of PcdLib class library for DXE phase.\r
 \r
-Copyright (c) 2006 - 2008, Intel Corporation<BR>\r
+Copyright (c) 2006 - 2009, Intel Corporation<BR>\r
 All rights reserved. This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -17,14 +17,15 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <PiDxe.h>\r
 \r
 #include <Protocol/Pcd.h>\r
+#include <Protocol/PiPcd.h>\r
 \r
 #include <Library/PcdLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 #include <Library/BaseMemoryLib.h>\r
 \r
-PCD_PROTOCOL  *mPcd = NULL;\r
-\r
+PCD_PROTOCOL     *mPcd = NULL;\r
+EFI_PCD_PROTOCOL *mPiPcd = NULL;\r
 \r
 /**\r
   The constructor function caches the PCD_PROTOCOL pointer.\r
@@ -45,12 +46,19 @@ PcdLibConstructor (
   EFI_STATUS  Status;\r
 \r
   //\r
-  // PCD protocol has not been installed, but a module needs to access a\r
-  // dynamic PCD entry.\r
+  // PCD protocol need to be installed before the module access Dynamic type PCD.\r
+  // But dynamic type PCD is not required in PI 1.2 specification.\r
   // \r
-  Status = gBS->LocateProtocol (&gPcdProtocolGuid, NULL, (VOID **)&mPcd);\r
+  gBS->LocateProtocol (&gPcdProtocolGuid, NULL, (VOID **)&mPcd);\r
+  \r
+  //\r
+  // PI Pcd protocol defined in PI 1.2 vol3 should be installed before the module \r
+  // access DynamicEx type PCD.\r
+  //\r
+  Status = gBS->LocateProtocol (&gEfiPcdProtocolGuid, NULL, (VOID **) mPiPcd);\r
+  \r
   ASSERT_EFI_ERROR (Status);\r
-  ASSERT (mPcd!= NULL);\r
+  ASSERT (mPiPcd!= NULL);\r
 \r
   return Status;\r
 }\r
@@ -74,6 +82,7 @@ LibPcdSetSku (
   IN UINTN   SkuId\r
   )\r
 {\r
+  ASSERT (mPcd != NULL);\r
   ASSERT (SkuId < PCD_MAX_SKU_ID);\r
 \r
   mPcd->SetSku (SkuId);\r
@@ -99,6 +108,7 @@ LibPcdGet8 (
   IN UINTN             TokenNumber\r
   )\r
 {\r
+  ASSERT (mPcd != NULL);\r
   return mPcd->Get8 (TokenNumber);\r
 }\r
 \r
@@ -120,6 +130,7 @@ LibPcdGet16 (
   IN UINTN             TokenNumber\r
   )\r
 {\r
+  ASSERT (mPcd != NULL);\r
   return mPcd->Get16 (TokenNumber);\r
 }\r
 \r
@@ -141,6 +152,7 @@ LibPcdGet32 (
   IN UINTN             TokenNumber\r
   )\r
 {\r
+  ASSERT (mPcd != NULL);\r
   return mPcd->Get32 (TokenNumber);\r
 }\r
 \r
@@ -162,6 +174,7 @@ LibPcdGet64 (
   IN UINTN             TokenNumber\r
   )\r
 {\r
+  ASSERT (mPcd != NULL);\r
   return mPcd->Get64 (TokenNumber);\r
 }\r
 \r
@@ -183,6 +196,7 @@ LibPcdGetPtr (
   IN UINTN             TokenNumber\r
   )\r
 {\r
+  ASSERT (mPcd != NULL);\r
   return mPcd->GetPtr (TokenNumber);\r
 }\r
 \r
@@ -204,6 +218,7 @@ LibPcdGetBool (
   IN UINTN             TokenNumber\r
   )\r
 {\r
+  ASSERT (mPcd != NULL);\r
   return mPcd->GetBool (TokenNumber);\r
 }\r
 \r
@@ -223,6 +238,7 @@ LibPcdGetSize (
   IN UINTN             TokenNumber\r
   )\r
 {\r
+  ASSERT (mPcd != NULL);\r
   return mPcd->GetSize (TokenNumber);\r
 }\r
 \r
@@ -251,7 +267,7 @@ LibPcdGetEx8 (
 {\r
   ASSERT (Guid != NULL);\r
   \r
-  return mPcd->Get8Ex (Guid, TokenNumber);\r
+  return mPiPcd->Get8Ex (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -278,7 +294,7 @@ LibPcdGetEx16 (
 {\r
   ASSERT (Guid != NULL);\r
 \r
-  return mPcd->Get16Ex (Guid, TokenNumber);\r
+  return mPiPcd->Get16Ex (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -302,7 +318,7 @@ LibPcdGetEx32 (
 {\r
   ASSERT (Guid != NULL);\r
 \r
-  return mPcd->Get32Ex (Guid, TokenNumber);\r
+  return mPiPcd->Get32Ex (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -330,7 +346,7 @@ LibPcdGetEx64 (
 {\r
   ASSERT (Guid != NULL);\r
   \r
-  return mPcd->Get64Ex (Guid, TokenNumber);\r
+  return mPiPcd->Get64Ex (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -358,7 +374,7 @@ LibPcdGetExPtr (
 {\r
   ASSERT (Guid != NULL);\r
 \r
-  return mPcd->GetPtrEx (Guid, TokenNumber);\r
+  return mPiPcd->GetPtrEx (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -386,7 +402,7 @@ LibPcdGetExBool (
 {\r
   ASSERT (Guid != NULL);\r
 \r
-  return mPcd->GetBoolEx (Guid, TokenNumber);\r
+  return mPiPcd->GetBoolEx (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -414,7 +430,7 @@ LibPcdGetExSize (
 {\r
   ASSERT (Guid != NULL);\r
 \r
-  return mPcd->GetSizeEx (Guid, TokenNumber);\r
+  return mPiPcd->GetSizeEx (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -440,6 +456,7 @@ LibPcdSet8 (
 {\r
   EFI_STATUS Status;\r
 \r
+  ASSERT (mPcd != NULL);\r
   Status = mPcd->Set8 (TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
@@ -470,6 +487,7 @@ LibPcdSet16 (
 {\r
   EFI_STATUS Status;\r
 \r
+  ASSERT (mPcd != NULL);\r
   Status = mPcd->Set16 (TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
@@ -499,6 +517,8 @@ LibPcdSet32 (
   )\r
 {\r
   EFI_STATUS Status;\r
+  \r
+  ASSERT (mPcd != NULL);\r
   Status = mPcd->Set32 (TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
@@ -529,6 +549,7 @@ LibPcdSet64 (
 {\r
   EFI_STATUS Status;\r
 \r
+  ASSERT (mPcd != NULL);\r
   Status = mPcd->Set64 (TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
@@ -570,6 +591,7 @@ LibPcdSetPtr (
 {\r
   EFI_STATUS Status;\r
 \r
+  ASSERT (mPcd != NULL);\r
   ASSERT (SizeOfBuffer != NULL);\r
 \r
   if (*SizeOfBuffer > 0) {\r
@@ -608,6 +630,7 @@ LibPcdSetBool (
 {\r
   EFI_STATUS Status;\r
 \r
+  ASSERT (mPcd != NULL);\r
   Status = mPcd->SetBool (TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
@@ -645,7 +668,7 @@ LibPcdSetEx8 (
 \r
   ASSERT (Guid != NULL);\r
 \r
-  Status = mPcd->Set8Ex (Guid, TokenNumber, Value);\r
+  Status = mPiPcd->Set8Ex (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -682,7 +705,7 @@ LibPcdSetEx16 (
 \r
   ASSERT (Guid != NULL);\r
 \r
-  Status = mPcd->Set16Ex (Guid, TokenNumber, Value);\r
+  Status = mPiPcd->Set16Ex (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -719,7 +742,7 @@ LibPcdSetEx32 (
 \r
   ASSERT (Guid != NULL);\r
 \r
-  Status = mPcd->Set32Ex (Guid, TokenNumber, Value);\r
+  Status = mPiPcd->Set32Ex (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -755,7 +778,7 @@ LibPcdSetEx64 (
 \r
   ASSERT (Guid != NULL);\r
 \r
-  Status = mPcd->Set64Ex (Guid, TokenNumber, Value);\r
+  Status = mPiPcd->Set64Ex (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -805,7 +828,7 @@ LibPcdSetExPtr (
     ASSERT (Buffer != NULL);\r
   }\r
 \r
-  Status = mPcd->SetPtrEx (Guid, TokenNumber, SizeOfBuffer, Buffer);\r
+  Status = mPiPcd->SetPtrEx (Guid, TokenNumber, SizeOfBuffer, Buffer);\r
 \r
   if (EFI_ERROR (Status)) {\r
     return NULL;\r
@@ -844,7 +867,7 @@ LibPcdSetExBool (
 \r
   ASSERT (Guid != NULL);\r
 \r
-  Status = mPcd->SetBoolEx (Guid, TokenNumber, Value);\r
+  Status = mPiPcd->SetBoolEx (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -881,7 +904,7 @@ LibPcdCallbackOnSet (
 \r
   ASSERT (NotificationFunction != NULL);\r
 \r
-  Status = mPcd->CallbackOnSet (Guid, TokenNumber, NotificationFunction);\r
+  Status = mPiPcd->CallbackOnSet (Guid, TokenNumber, NotificationFunction);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -915,7 +938,7 @@ LibPcdCancelCallback (
 \r
   ASSERT (NotificationFunction != NULL);\r
     \r
-  Status = mPcd->CancelCallback (Guid, TokenNumber, NotificationFunction);\r
+  Status = mPiPcd->CancelCallback (Guid, TokenNumber, NotificationFunction);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -952,7 +975,7 @@ LibPcdGetNextToken (
 {\r
   EFI_STATUS Status;\r
 \r
-  Status = mPcd->GetNextToken (Guid, &TokenNumber);\r
+  Status = mPiPcd->GetNextToken (Guid, &TokenNumber);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -982,7 +1005,7 @@ LibPcdGetNextTokenSpace (
 {\r
   EFI_STATUS Status;\r
 \r
-  Status = mPcd->GetNextTokenSpace (&TokenSpaceGuid);\r
+  Status = mPiPcd->GetNextTokenSpace (&TokenSpaceGuid);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
index cd2a1c8e178009450ba51625e7d9f96843c5054c..2958ed0a7cf723a554223b9f2dc51e5686512dbc 100644 (file)
@@ -1,9 +1,19 @@
 #/** @file\r
 # Instance of PCD Library using PCD Protocol.\r
 #\r
-# PCD Library that uses the PCD Protocol to access Dynamic and DynamicEx PCD entries.\r
+# There are two PCD PPIs as follows:\r
+#   1) PCD_PROTOCOL\r
+#      It is EDKII implementation which support Dynamic/DynamicEx Pcds.\r
+#   2) EFI_PCD_PROTOCOL\r
+#      It is defined by PI specification 1.2, Vol 3 which only support dynamicEx \r
+#      type Pcd.\r
 #\r
-# Copyright (c) 2007 - 2008, Intel Corporation.\r
+# For dynamicEx type PCD, it is compatible between PCD_PROTOCOL and EFI_PCD_PROTOCOL.\r
+#\r
+# This library instance uses the PCD_PROTOCOL to handle dynamic PCD request and use\r
+# EFI_PCD_PROTOCOL to handle dynamicEx type PCD.\r
+#\r
+# Copyright (c) 2007 - 2009, Intel Corporation.\r
 #\r
 #  All rights reserved. This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
@@ -44,7 +54,8 @@
 \r
 [Protocols]\r
   gPcdProtocolGuid                              ## CONSUMES\r
-\r
+  gEfiPcdProtocolGuid                           ## CONSUMES\r
+  \r
 [Depex]\r
-  gPcdProtocolGuid\r
+  gEfiPcdProtocolGuid\r
 \r
index 2e2dbb6ac51c59603c0926a3696a4f0b819d3730..5dcb16ad43d0f503c48877b1572cf5457db5fae1 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 Implementation of PcdLib class library for PEI phase.\r
 \r
-Copyright (c) 2006 - 2008, Intel Corporation<BR>\r
+Copyright (c) 2006 - 2009, Intel Corporation<BR>\r
 All rights reserved. This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -19,6 +19,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #include <PiPei.h>\r
 \r
 #include <Ppi/Pcd.h>\r
+#include <Ppi/PiPcd.h>\r
 \r
 #include <Library/PeiServicesLib.h>\r
 #include <Library/PcdLib.h>\r
@@ -48,6 +49,29 @@ GetPcdPpiPointer (
   return PcdPpi;\r
 }\r
 \r
+/**\r
+  Retrieve the pointer of EFI_PEI_PCD_PPI defined in PI 1.2 Vol 3.\r
+\r
+  This function is to locate EFI_PEI_PCD_PPI PPI via PeiService. \r
+  If fail to locate EFI_PEI_PCD_PPI, then ASSERT_EFI_ERROR().\r
+  \r
+  @retval EFI_PEI_PCD_PPI * The pointer to the EFI_PEI_PCD_PPI.\r
+\r
+**/\r
+EFI_PEI_PCD_PPI *\r
+GetPiPcdPpiPointer (\r
+  VOID\r
+  )\r
+{\r
+  EFI_STATUS        Status;\r
+  EFI_PEI_PCD_PPI   *PiPcdPpi;\r
+  \r
+  Status = PeiServicesLocatePpi (&gEfiPeiPcdPpiGuid, 0, NULL, (VOID **)&PiPcdPpi);\r
+  ASSERT_EFI_ERROR (Status);\r
+  \r
+  return PiPcdPpi;\r
+}  \r
+  \r
 /**\r
   This function provides a means by which SKU support can be established in the PCD infrastructure.\r
 \r
@@ -69,8 +93,8 @@ LibPcdSetSku (
 \r
   ASSERT (SkuId < PCD_MAX_SKU_ID);\r
 \r
-  GetPcdPpiPointer()->SetSku (SkuId);\r
-\r
+  GetPiPcdPpiPointer()->SetSku (SkuId);\r
+  \r
   return SkuId;\r
 }\r
 \r
@@ -244,7 +268,7 @@ LibPcdGetEx8 (
 {\r
   ASSERT (Guid != NULL);\r
 \r
-  return (GetPcdPpiPointer ())->Get8Ex (Guid, TokenNumber);\r
+  return (GetPiPcdPpiPointer ())->GetEx8 (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -273,7 +297,7 @@ LibPcdGetEx16 (
 \r
   ASSERT (Guid != NULL);\r
 \r
-  return (GetPcdPpiPointer ())->Get16Ex (Guid, TokenNumber);\r
+  return (GetPiPcdPpiPointer ())->GetEx16 (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -298,7 +322,7 @@ LibPcdGetEx32 (
 {\r
   ASSERT (Guid != NULL);\r
 \r
-  return (GetPcdPpiPointer ())->Get32Ex (Guid, TokenNumber);\r
+  return (GetPiPcdPpiPointer ())->GetEx32 (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -326,7 +350,7 @@ LibPcdGetEx64 (
   )\r
 {\r
   ASSERT (Guid != NULL);\r
-  return (GetPcdPpiPointer ())->Get64Ex (Guid, TokenNumber);\r
+  return (GetPiPcdPpiPointer ())->GetEx64 (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -354,7 +378,7 @@ LibPcdGetExPtr (
 {\r
   ASSERT (Guid != NULL);\r
 \r
-  return (GetPcdPpiPointer ())->GetPtrEx (Guid, TokenNumber);\r
+  return (GetPiPcdPpiPointer ())->GetExPtr (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -381,7 +405,7 @@ LibPcdGetExBool (
   )\r
 {\r
   ASSERT (Guid != NULL);\r
-  return (GetPcdPpiPointer ())->GetBoolEx (Guid, TokenNumber);\r
+  return (GetPiPcdPpiPointer ())->GetExBool (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -408,7 +432,7 @@ LibPcdGetExSize (
   )\r
 {\r
   ASSERT (Guid != NULL);\r
-  return (GetPcdPpiPointer ())->GetSizeEx (Guid, TokenNumber);\r
+  return (GetPiPcdPpiPointer ())->GetExSize (Guid, TokenNumber);\r
 }\r
 \r
 \r
@@ -640,7 +664,7 @@ LibPcdSetEx8 (
 \r
   ASSERT (Guid != NULL);\r
 \r
-  Status = (GetPcdPpiPointer ())->Set8Ex (Guid, TokenNumber, Value);\r
+  Status = (GetPiPcdPpiPointer ())->SetEx8 (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -675,7 +699,7 @@ LibPcdSetEx16 (
 {\r
   EFI_STATUS Status;\r
   ASSERT (Guid != NULL);\r
-  Status = (GetPcdPpiPointer ())->Set16Ex (Guid, TokenNumber, Value);\r
+  Status = (GetPiPcdPpiPointer ())->SetEx16 (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -712,7 +736,7 @@ LibPcdSetEx32 (
 \r
   ASSERT (Guid != NULL);\r
 \r
-  Status = (GetPcdPpiPointer ())->Set32Ex (Guid, TokenNumber, Value);\r
+  Status = (GetPiPcdPpiPointer ())->SetEx32 (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -747,7 +771,7 @@ LibPcdSetEx64 (
   EFI_STATUS Status;\r
   ASSERT (Guid != NULL);\r
 \r
-  Status = (GetPcdPpiPointer ())->Set64Ex (Guid, TokenNumber, Value);\r
+  Status = (GetPiPcdPpiPointer ())->SetEx64 (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -794,7 +818,7 @@ LibPcdSetExPtr (
   }\r
   ASSERT (Guid != NULL);\r
 \r
-  Status = (GetPcdPpiPointer ())->SetPtrEx (Guid, TokenNumber, SizeOfBuffer, Buffer);\r
+  Status = (GetPiPcdPpiPointer ())->SetExPtr (Guid, TokenNumber, SizeOfBuffer, Buffer);\r
 \r
   if (EFI_ERROR (Status)) {\r
     return NULL;\r
@@ -832,7 +856,7 @@ LibPcdSetExBool (
   EFI_STATUS Status;\r
 \r
   ASSERT (Guid != NULL);\r
-  Status = (GetPcdPpiPointer ())->SetBoolEx (Guid, TokenNumber, Value);\r
+  Status = (GetPiPcdPpiPointer ())->SetExBool (Guid, TokenNumber, Value);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -869,7 +893,7 @@ LibPcdCallbackOnSet (
 \r
   ASSERT (NotificationFunction != NULL);\r
 \r
-  Status = (GetPcdPpiPointer ())->CallbackOnSet (Guid, TokenNumber, NotificationFunction);\r
+  Status = (GetPiPcdPpiPointer ())->CallbackOnSet (Guid, TokenNumber, NotificationFunction);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -903,7 +927,7 @@ LibPcdCancelCallback (
 \r
   ASSERT (NotificationFunction != NULL);\r
 \r
-  Status = (GetPcdPpiPointer ())->CancelCallback (Guid, TokenNumber, NotificationFunction);\r
+  Status = (GetPiPcdPpiPointer ())->CancelCallback (Guid, TokenNumber, NotificationFunction);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -940,7 +964,7 @@ LibPcdGetNextToken (
 {\r
   EFI_STATUS Status;\r
 \r
-  Status = (GetPcdPpiPointer ())->GetNextToken (Guid, &TokenNumber);\r
+  Status = (GetPiPcdPpiPointer ())->GetNextToken (Guid, &TokenNumber);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
@@ -969,7 +993,7 @@ LibPcdGetNextTokenSpace (
 {\r
   EFI_STATUS Status;\r
 \r
-  Status = (GetPcdPpiPointer ())->GetNextTokenSpace (&TokenSpaceGuid);\r
+  Status = (GetPiPcdPpiPointer ())->GetNextTokenSpace (&TokenSpaceGuid);\r
 \r
   ASSERT_EFI_ERROR (Status);\r
 \r
index 17363b14505bfda6795373a666549032bf4820f7..a714147c12e0fefa39e1a3c5b469de1e23f7982e 100644 (file)
@@ -1,9 +1,21 @@
 #/** @file\r
 # Instance of PCD Library using PCD PPI.\r
 #\r
+# There are two PCD PPIs as follows:\r
+#   1) PCD_PPI \r
+#      It is EDKII implementation which support Dynamic/DynamicEx Pcds.\r
+#   2) EFI_PEI_PCD_PPI\r
+#      It is defined by PI specification 1.2, Vol 3 which only support dynamicEx \r
+#      type Pcd.\r
+# For dynamicEx type PCD, it is compatible between PCD_PPI and EFI_PEI_PCD_PPI.\r
+# This library instance uses the PCD_PPI to handle dynamic PCD request and use\r
+# EFI_PEI_PCD_PPI to handle dynamicEx type PCD.\r
+#\r
+# This library instance assume the PCD_PPI and EFI_PEI_PCD_PPI are both installed early.\r
+#\r
 # PCD Library that uses the PCD PPI to access Dynamic and DynamicEx PCD entries\r
 #\r
-# Copyright (c) 2007 - 2008, Intel Corporation\r
+# Copyright (c) 2007 - 2009, Intel Corporation\r
 #\r
 #  All rights reserved. This program and the accompanying materials\r
 #  are licensed and made available under the terms and conditions of the BSD License\r
@@ -44,6 +56,8 @@
 \r
 [Ppis]\r
   gPcdPpiGuid                                   ## CONSUMES\r
-\r
+  gEfiPeiPcdPpiGuid                             ## CONSUMES\r
+  \r
 [depex]\r
-  gPcdPpiGuid\r
+  gEfiPeiPcdPpiGuid\r
+  
\ No newline at end of file