\r
PCD_PROTOCOL *mPcd = NULL;\r
\r
-/**\r
- Retrieves PCD protocol interface.\r
\r
- This function retrieves PCD protocol interface. On the first invocation, it\r
- retrieves protocol interface via UEFI boot services and cache it to accelarte\r
- further access. A module invokes this function only when it needs to access a\r
- dynamic PCD entry.\r
- If UefiBootServicesTableLib has not been initialized, then ASSERT ().\r
- If PCD protocol has not been installed, then ASSERT ().\r
+/**\r
+ The constructor function caches the PCD_PROTOCOL pointer.\r
\r
- @return mPcd The PCD protocol protocol interface.\r
+ @param[in] ImageHandle The firmware allocated handle for the EFI image. \r
+ @param[in] SystemTable A pointer to the EFI System Table.\r
+ \r
+ @retval EFI_SUCCESS The constructor always return EFI_SUCCESS.\r
\r
**/\r
-PCD_PROTOCOL*\r
-GetPcdProtocol (\r
- VOID\r
+EFI_STATUS\r
+EFIAPI\r
+PcdLibConstructor (\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
EFI_STATUS Status;\r
\r
- if (mPcd == NULL) {\r
- ASSERT (gBS != NULL);\r
- //\r
- // PCD protocol has not been installed, but a module needs to access a\r
- // dynamic PCD entry.\r
- // \r
- Status = gBS->LocateProtocol (&gPcdProtocolGuid, NULL, (VOID **)&mPcd);\r
- ASSERT_EFI_ERROR (Status);\r
- ASSERT (mPcd!= NULL);\r
- }\r
+ //\r
+ // PCD protocol has not been installed, but a module needs to access a\r
+ // dynamic PCD entry.\r
+ // \r
+ Status = gBS->LocateProtocol (&gPcdProtocolGuid, NULL, (VOID **)&mPcd);\r
+ ASSERT_EFI_ERROR (Status);\r
+ ASSERT (mPcd!= NULL);\r
\r
- return mPcd;\r
+ return Status;\r
}\r
\r
\r
{\r
ASSERT (SkuId < PCD_MAX_SKU_ID);\r
\r
- (GetPcdProtocol ())->SetSku (SkuId);\r
+ mPcd->SetSku (SkuId);\r
\r
return SkuId;\r
}\r
IN UINTN TokenNumber\r
)\r
{\r
- return (GetPcdProtocol ())->Get8 (TokenNumber);\r
+ return mPcd->Get8 (TokenNumber);\r
}\r
\r
\r
IN UINTN TokenNumber\r
)\r
{\r
- return (GetPcdProtocol ())->Get16 (TokenNumber);\r
+ return mPcd->Get16 (TokenNumber);\r
}\r
\r
\r
IN UINTN TokenNumber\r
)\r
{\r
- return (GetPcdProtocol ())->Get32 (TokenNumber);\r
+ return mPcd->Get32 (TokenNumber);\r
}\r
\r
\r
IN UINTN TokenNumber\r
)\r
{\r
- return (GetPcdProtocol ())->Get64 (TokenNumber);\r
+ return mPcd->Get64 (TokenNumber);\r
}\r
\r
\r
IN UINTN TokenNumber\r
)\r
{\r
- return (GetPcdProtocol ())->GetPtr (TokenNumber);\r
+ return mPcd->GetPtr (TokenNumber);\r
}\r
\r
\r
IN UINTN TokenNumber\r
)\r
{\r
- return (GetPcdProtocol ())->GetBool (TokenNumber);\r
+ return mPcd->GetBool (TokenNumber);\r
}\r
\r
\r
IN UINTN TokenNumber\r
)\r
{\r
- return (GetPcdProtocol ())->GetSize (TokenNumber);\r
+ return mPcd->GetSize (TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdProtocol ())->Get8Ex (Guid, TokenNumber);\r
+ return mPcd->Get8Ex (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdProtocol ())->Get16Ex (Guid, TokenNumber);\r
+ return mPcd->Get16Ex (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdProtocol ())->Get32Ex (Guid, TokenNumber);\r
+ return mPcd->Get32Ex (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdProtocol ())->Get64Ex (Guid, TokenNumber);\r
+ return mPcd->Get64Ex (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdProtocol ())->GetPtrEx (Guid, TokenNumber);\r
+ return mPcd->GetPtrEx (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdProtocol ())->GetBoolEx (Guid, TokenNumber);\r
+ return mPcd->GetBoolEx (Guid, TokenNumber);\r
}\r
\r
\r
{\r
ASSERT (Guid != NULL);\r
\r
- return (GetPcdProtocol ())->GetSizeEx (Guid, TokenNumber);\r
+ return mPcd->GetSizeEx (Guid, TokenNumber);\r
}\r
\r
\r
{\r
EFI_STATUS Status;\r
\r
- Status = (GetPcdProtocol ())->Set8 (TokenNumber, Value);\r
+ Status = mPcd->Set8 (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
{\r
EFI_STATUS Status;\r
\r
- Status = (GetPcdProtocol ())->Set16 (TokenNumber, Value);\r
+ Status = mPcd->Set16 (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
)\r
{\r
EFI_STATUS Status;\r
- Status = (GetPcdProtocol ())->Set32 (TokenNumber, Value);\r
+ Status = mPcd->Set32 (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
{\r
EFI_STATUS Status;\r
\r
- Status = (GetPcdProtocol ())->Set64 (TokenNumber, Value);\r
+ Status = mPcd->Set64 (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
ASSERT (Buffer != NULL);\r
}\r
\r
- Status = (GetPcdProtocol ())->SetPtr (TokenNumber, SizeOfBuffer, Buffer);\r
+ Status = mPcd->SetPtr (TokenNumber, SizeOfBuffer, Buffer);\r
\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
{\r
EFI_STATUS Status;\r
\r
- Status = (GetPcdProtocol ())->SetBool (TokenNumber, Value);\r
+ Status = mPcd->SetBool (TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
\r
ASSERT (Guid != NULL);\r
\r
- Status = (GetPcdProtocol ())->Set8Ex (Guid, TokenNumber, Value);\r
+ Status = mPcd->Set8Ex (Guid, TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
\r
ASSERT (Guid != NULL);\r
\r
- Status = (GetPcdProtocol ())->Set16Ex (Guid, TokenNumber, Value);\r
+ Status = mPcd->Set16Ex (Guid, TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
\r
ASSERT (Guid != NULL);\r
\r
- Status = (GetPcdProtocol ())->Set32Ex (Guid, TokenNumber, Value);\r
+ Status = mPcd->Set32Ex (Guid, TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
\r
ASSERT (Guid != NULL);\r
\r
- Status = (GetPcdProtocol ())->Set64Ex (Guid, TokenNumber, Value);\r
+ Status = mPcd->Set64Ex (Guid, TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
ASSERT (Buffer != NULL);\r
}\r
\r
- Status = (GetPcdProtocol ())->SetPtrEx (Guid, TokenNumber, SizeOfBuffer, Buffer);\r
+ Status = mPcd->SetPtrEx (Guid, TokenNumber, SizeOfBuffer, Buffer);\r
\r
if (EFI_ERROR (Status)) {\r
return NULL;\r
\r
ASSERT (Guid != NULL);\r
\r
- Status = (GetPcdProtocol ())->SetBoolEx (Guid, TokenNumber, Value);\r
+ Status = mPcd->SetBoolEx (Guid, TokenNumber, Value);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
\r
ASSERT (NotificationFunction != NULL);\r
\r
- Status = (GetPcdProtocol ())->CallbackOnSet (Guid, TokenNumber, NotificationFunction);\r
+ Status = mPcd->CallbackOnSet (Guid, TokenNumber, NotificationFunction);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
\r
ASSERT (NotificationFunction != NULL);\r
\r
- Status = (GetPcdProtocol ())->CancelCallback (Guid, TokenNumber, NotificationFunction);\r
+ Status = mPcd->CancelCallback (Guid, TokenNumber, NotificationFunction);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
{\r
EFI_STATUS Status;\r
\r
- Status = (GetPcdProtocol ())->GetNextToken (Guid, &TokenNumber);\r
+ Status = mPcd->GetNextToken (Guid, &TokenNumber);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
{\r
EFI_STATUS Status;\r
\r
- Status = (GetPcdProtocol ())->GetNextTokenSpace (&Guid);\r
+ Status = mPcd->GetNextTokenSpace (&Guid);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r