/** @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
#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
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
IN UINTN SkuId\r
)\r
{\r
+ ASSERT (mPcd != NULL);\r
ASSERT (SkuId < PCD_MAX_SKU_ID);\r
\r
mPcd->SetSku (SkuId);\r
IN UINTN TokenNumber\r
)\r
{\r
+ ASSERT (mPcd != NULL);\r
return mPcd->Get8 (TokenNumber);\r
}\r
\r
IN UINTN TokenNumber\r
)\r
{\r
+ ASSERT (mPcd != NULL);\r
return mPcd->Get16 (TokenNumber);\r
}\r
\r
IN UINTN TokenNumber\r
)\r
{\r
+ ASSERT (mPcd != NULL);\r
return mPcd->Get32 (TokenNumber);\r
}\r
\r
IN UINTN TokenNumber\r
)\r
{\r
+ ASSERT (mPcd != NULL);\r
return mPcd->Get64 (TokenNumber);\r
}\r
\r
IN UINTN TokenNumber\r
)\r
{\r
+ ASSERT (mPcd != NULL);\r
return mPcd->GetPtr (TokenNumber);\r
}\r
\r
IN UINTN TokenNumber\r
)\r
{\r
+ ASSERT (mPcd != NULL);\r
return mPcd->GetBool (TokenNumber);\r
}\r
\r
IN UINTN TokenNumber\r
)\r
{\r
+ ASSERT (mPcd != NULL);\r
return mPcd->GetSize (TokenNumber);\r
}\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return mPcd->Get8Ex (Guid, TokenNumber);\r
+ return mPiPcd->Get8Ex (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return mPcd->Get16Ex (Guid, TokenNumber);\r
+ return mPiPcd->Get16Ex (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return mPcd->Get32Ex (Guid, TokenNumber);\r
+ return mPiPcd->Get32Ex (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return mPcd->Get64Ex (Guid, TokenNumber);\r
+ return mPiPcd->Get64Ex (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return mPcd->GetPtrEx (Guid, TokenNumber);\r
+ return mPiPcd->GetPtrEx (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return mPcd->GetBoolEx (Guid, TokenNumber);\r
+ return mPiPcd->GetBoolEx (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return mPcd->GetSizeEx (Guid, TokenNumber);\r
+ return mPiPcd->GetSizeEx (Guid, TokenNumber);\r
}\r
\r
\r
{\r
EFI_STATUS Status;\r
\r
+ ASSERT (mPcd != NULL);\r
Status = mPcd->Set8 (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
{\r
EFI_STATUS Status;\r
\r
+ ASSERT (mPcd != NULL);\r
Status = mPcd->Set16 (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
)\r
{\r
EFI_STATUS Status;\r
+ \r
+ ASSERT (mPcd != NULL);\r
Status = mPcd->Set32 (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
{\r
EFI_STATUS Status;\r
\r
+ ASSERT (mPcd != NULL);\r
Status = mPcd->Set64 (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
{\r
EFI_STATUS Status;\r
\r
+ ASSERT (mPcd != NULL);\r
ASSERT (SizeOfBuffer != NULL);\r
\r
if (*SizeOfBuffer > 0) {\r
{\r
EFI_STATUS Status;\r
\r
+ ASSERT (mPcd != NULL);\r
Status = mPcd->SetBool (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\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
\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
\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
\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
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
\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
\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
\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
{\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
{\r
EFI_STATUS Status;\r
\r
- Status = mPcd->GetNextTokenSpace (&TokenSpaceGuid);\r
+ Status = mPiPcd->GetNextTokenSpace (&TokenSpaceGuid);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
/** @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
#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
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
\r
ASSERT (SkuId < PCD_MAX_SKU_ID);\r
\r
- GetPcdPpiPointer()->SetSku (SkuId);\r
-\r
+ GetPiPcdPpiPointer()->SetSku (SkuId);\r
+ \r
return SkuId;\r
}\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdPpiPointer ())->Get8Ex (Guid, TokenNumber);\r
+ return (GetPiPcdPpiPointer ())->GetEx8 (Guid, TokenNumber);\r
}\r
\r
\r
\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdPpiPointer ())->Get16Ex (Guid, TokenNumber);\r
+ return (GetPiPcdPpiPointer ())->GetEx16 (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdPpiPointer ())->Get32Ex (Guid, TokenNumber);\r
+ return (GetPiPcdPpiPointer ())->GetEx32 (Guid, TokenNumber);\r
}\r
\r
\r
)\r
{\r
ASSERT (Guid != NULL);\r
- return (GetPcdPpiPointer ())->Get64Ex (Guid, TokenNumber);\r
+ return (GetPiPcdPpiPointer ())->GetEx64 (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdPpiPointer ())->GetPtrEx (Guid, TokenNumber);\r
+ return (GetPiPcdPpiPointer ())->GetExPtr (Guid, TokenNumber);\r
}\r
\r
\r
)\r
{\r
ASSERT (Guid != NULL);\r
- return (GetPcdPpiPointer ())->GetBoolEx (Guid, TokenNumber);\r
+ return (GetPiPcdPpiPointer ())->GetExBool (Guid, TokenNumber);\r
}\r
\r
\r
)\r
{\r
ASSERT (Guid != NULL);\r
- return (GetPcdPpiPointer ())->GetSizeEx (Guid, TokenNumber);\r
+ return (GetPiPcdPpiPointer ())->GetExSize (Guid, TokenNumber);\r
}\r
\r
\r
\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
{\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
\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
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
}\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
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
\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
\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
{\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
{\r
EFI_STATUS Status;\r
\r
- Status = (GetPcdPpiPointer ())->GetNextTokenSpace (&TokenSpaceGuid);\r
+ Status = (GetPiPcdPpiPointer ())->GetNextTokenSpace (&TokenSpaceGuid);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r