///\r
EFI_LOCK mPcdDatabaseLock = EFI_INITIALIZE_LOCK_VARIABLE(TPL_NOTIFY);\r
\r
-//\r
-// PCD_PROTOCOL the native implementation provided by MdePkg which support dynamic \r
-// type and dynamicEx type PCD.\r
-//\r
+///\r
+/// PCD_PROTOCOL the EDKII native implementation which support dynamic \r
+/// type and dynamicEx type PCDs.\r
+///\r
PCD_PROTOCOL mPcdInstance = {\r
DxePcdSetSku,\r
\r
DxePcdGetNextTokenSpace\r
};\r
\r
-//\r
-// EFI_PCD_PROTOCOL is defined in PI 1.2 Vol 3 which only support dynamicEx type\r
-// PCD.\r
-//\r
+///\r
+/// EFI_PCD_PROTOCOL is defined in PI 1.2 Vol 3 which only support dynamicEx type\r
+/// PCD.\r
+///\r
EFI_PCD_PROTOCOL mEfiPcdInstance = {\r
DxePcdSetSku,\r
DxePcdGet8Ex,\r
DxePcdGetNextTokenSpace\r
};\r
\r
-\r
-\r
+EFI_HANDLE mPcdHandle = NULL;\r
\r
/**\r
Main entry for PCD DXE driver.\r
)\r
{\r
EFI_STATUS Status;\r
- EFI_HANDLE mNewHandle;\r
\r
//\r
// Make sure the Pcd Protocol is not already installed in the system\r
\r
BuildPcdDxeDataBase ();\r
\r
- mNewHandle = NULL;\r
- \r
//\r
// Install PCD_PROTOCOL to handle dynamic type PCD\r
// Install EFI_PCD_PROTOCOL to handle dynamicEx type PCD\r
//\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
- &mNewHandle,\r
- &gPcdProtocolGuid,\r
- &mPcdInstance,\r
- &gEfiPcdProtocolGuid,\r
- &mEfiPcdInstance\r
+ &mPcdHandle,\r
+ &gPcdProtocolGuid, &mPcdInstance,\r
+ &gEfiPcdProtocolGuid, &mEfiPcdInstance,\r
+ NULL\r
);\r
\r
ASSERT_EFI_ERROR (Status);\r
\r
- return EFI_SUCCESS;\r
+ return Status;\r
\r
}\r
\r
\r
#include "Service.h"\r
\r
-//\r
-// Instance of PCD_PPI protocol is native implementation by MdePkg.\r
-// This protocol instance support dynamic and dynamicEx type PCDs.\r
-//\r
+///\r
+/// Instance of PCD_PPI protocol is EDKII native implementation.\r
+/// This protocol instance support dynamic and dynamicEx type PCDs.\r
+///\r
PCD_PPI mPcdPpiInstance = {\r
PeiPcdSetSku,\r
\r
PeiPcdGetNextTokenSpace\r
};\r
\r
-//\r
-// Instance of EFI_PEI_PCD_PPI which is defined in PI 1.2 Vol 3.\r
-// This PPI instance only support dyanmicEx type PCD.\r
-//\r
+///\r
+/// Instance of EFI_PEI_PCD_PPI which is defined in PI 1.2 Vol 3.\r
+/// This PPI instance only support dyanmicEx type PCD.\r
+///\r
EFI_PEI_PCD_PPI mEfiPcdPpiInstance = {\r
PeiPcdSetSku,\r
\r
PeiPcdGetNextTokenSpace\r
};\r
\r
-EFI_PEI_PPI_DESCRIPTOR mPpiPCD = {\r
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
- &gPcdPpiGuid,\r
- &mPcdPpiInstance\r
-};\r
-\r
-EFI_PEI_PPI_DESCRIPTOR mEfiPpiPCD = {\r
- (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
- &gEfiPeiPcdPpiGuid,\r
- &mEfiPcdPpiInstance\r
+EFI_PEI_PPI_DESCRIPTOR mPpiList[] = {\r
+ {\r
+ EFI_PEI_PPI_DESCRIPTOR_PPI,\r
+ &gPcdPpiGuid,\r
+ &mPcdPpiInstance\r
+ },\r
+ {\r
+ (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
+ &gEfiPeiPcdPpiGuid,\r
+ &mEfiPcdPpiInstance\r
+ }\r
};\r
\r
/**\r
BuildPcdDatabase ();\r
\r
//\r
- // Install PCD_PPI which produce support for dynamic and dynamicEx PCD\r
- //\r
- Status = PeiServicesInstallPpi (&mPpiPCD);\r
- ASSERT_EFI_ERROR (Status);\r
- \r
- //\r
- // Install EFI_PCD_PPI which produce support for dynamicEx PCD which is defined\r
- // in PI 1.2 Vol 3 specification.\r
+ // Install PCD_PPI and EFI_PEI_PCD_PPI.\r
//\r
- Status = PeiServicesInstallPpi (&mEfiPpiPCD);\r
+ Status = PeiServicesInstallPpi (&mPpiList[0]);\r
ASSERT_EFI_ERROR (Status);\r
\r
return Status;\r