From f89f5802f82b1b83f85a074fc0f76ec782e003b5 Mon Sep 17 00:00:00 2001 From: qwang12 Date: Wed, 30 Aug 2006 09:11:34 +0000 Subject: Add in feature flag PcdPeiPcdDatabaseSetEnabled, PcdPeiPcdDatabaseGetSizeEnabled, PcdPeiPcdDatabaseCallbackOnSetEnabled, PcdPeiPcdDatabaseExEnabled to allow user to customize Pcd service PEIM. It is very curical to save size in PEI phase. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1408 6f19259b-4bc3-4df7-8a09-765794883524 --- EdkModulePkg/Universal/PCD/Pei/Pcd.c | 16 +++++++++ EdkModulePkg/Universal/PCD/Pei/Pcd.msa | 60 ++++++++++++++++++++------------ EdkModulePkg/Universal/PCD/Pei/Service.c | 13 +++++++ 3 files changed, 67 insertions(+), 22 deletions(-) (limited to 'EdkModulePkg/Universal/PCD') diff --git a/EdkModulePkg/Universal/PCD/Pei/Pcd.c b/EdkModulePkg/Universal/PCD/Pei/Pcd.c index 40013cf8b5..33972d3c7f 100644 --- a/EdkModulePkg/Universal/PCD/Pei/Pcd.c +++ b/EdkModulePkg/Universal/PCD/Pei/Pcd.c @@ -174,6 +174,10 @@ PeiPcdGetSize ( UINTN Size; UINTN MaxSize; + if (!FeaturePcdGet(PcdPeiPcdDatabaseGetSizeEnabled)) { + return EFI_UNSUPPORTED; + } + PeiPcdDb = GetPcdDatabase (); // // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER. @@ -281,6 +285,10 @@ PeiPcdGetSizeEx ( IN UINTN ExTokenNumber ) { + if ((!FeaturePcdGet (PcdPeiPcdDatabaseGetSizeEnabled)) || !FeaturePcdGet (PcdPeiPcdDatabaseExEnabled)) { + return EFI_UNSUPPORTED; + } + return PeiPcdGetSize (GetExPcdTokenNumber (Guid, ExTokenNumber)); } @@ -446,6 +454,10 @@ PeiRegisterCallBackOnSet ( IN PCD_PPI_CALLBACK CallBackFunction ) { + if (!FeaturePcdGet(PcdPeiPcdDatabaseCallbackOnSetEnabled)) { + return EFI_UNSUPPORTED; + } + ASSERT (CallBackFunction != NULL); return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, TRUE); @@ -461,6 +473,10 @@ PcdUnRegisterCallBackOnSet ( IN PCD_PPI_CALLBACK CallBackFunction ) { + if (!FeaturePcdGet(PcdPeiPcdDatabaseCallbackOnSetEnabled)) { + return EFI_UNSUPPORTED; + } + ASSERT (CallBackFunction != NULL); return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, FALSE); diff --git a/EdkModulePkg/Universal/PCD/Pei/Pcd.msa b/EdkModulePkg/Universal/PCD/Pei/Pcd.msa index 9510738246..0ae491a85a 100644 --- a/EdkModulePkg/Universal/PCD/Pei/Pcd.msa +++ b/EdkModulePkg/Universal/PCD/Pei/Pcd.msa @@ -1,13 +1,5 @@ - - - + + PcdPeim PEIM @@ -16,11 +8,11 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.--> Component description file for Pcd Database PEIM module This DXE driver implement and produce the PCD PPI. Copyright (c) 2006, Intel Corporation - All rights reserved. This program and the accompanying materials - are licensed and made available under the terms and conditions of the BSD License - which accompanies this distribution. The full text of the license may be found at - http://opensource.org/licenses/bsd-license.php - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, + All rights reserved. This program and the accompanying materials + are licensed and made available under the terms and conditions of the BSD License + which accompanies this distribution. The full text of the license may be found at + http://opensource.org/licenses/bsd-license.php + THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. FRAMEWORK_BUILD_PACKAGING_SPECIFICATION 0x00000052 @@ -93,23 +85,47 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.--> - + PcdMaxPeiPcdCallBackNumberPerPcdEntry gEfiEdkModulePkgTokenSpaceGuid - The maximum number of callback function, which will be triggered when + The maximum number of callback function, which will be triggered when a PCD entry is been set, can be registered for a single PCD entry in PEI phase. - + PcdVpdBaseAddress gEfiEdkModulePkgTokenSpaceGuid - The base address of the VPD (Vital Product Data) region. It is + The base address of the VPD (Vital Product Data) region. It is normally a region reserved on flash. - + PcdPeiPcdDatabaseTraverseEnabled gEfiEdkModulePkgTokenSpaceGuid - This feature flag can be used to enable or disable the Pcd PEIM database + This feature flag can be used to enable or disable the Pcd PEIM database traverse capability. Disable it can reduce the size of final image generated. + + PcdPeiPcdDatabaseCallbackOnSetEnabled + gEfiEdkModulePkgTokenSpaceGuid + FALSE + This feature flag can be used to enable or disable the Callback On SET capability of PCD service PEIM. If a platform does not register any callback on set in PEI phase. This flag can be set to DISABLE to save size. + + + PcdPeiPcdDatabaseExEnabled + gEfiEdkModulePkgTokenSpaceGuid + FALSE + This feature flag can be used to enable or disable the PCD service PEIM to handle DynamicEX PCD. If a platform has no module to use DynamicEX in PEI phase. This flag can be set to DISABLE to save size. + + + PcdPeiPcdDatabaseGetSizeEnabled + gEfiEdkModulePkgTokenSpaceGuid + FALSE + This feature flag can be used to enable or disable the GET size capability of PCD service PEIM. If a platform does not do PCD get size operation in PEI phase. This flag can be set to DISABLE to save size. + + + PcdPeiPcdDatabaseSetEnabled + gEfiEdkModulePkgTokenSpaceGuid + FALSE + This feature flag can be used to enable or disable the SET capability of PCD service PEIM. If a platform does not do PCD SET operation in PEI phase. This flag can be set to DISABLE to save size. + - + \ No newline at end of file diff --git a/EdkModulePkg/Universal/PCD/Pei/Service.c b/EdkModulePkg/Universal/PCD/Pei/Service.c index 255267c9ab..521c88b7fc 100644 --- a/EdkModulePkg/Universal/PCD/Pei/Service.c +++ b/EdkModulePkg/Universal/PCD/Pei/Service.c @@ -337,6 +337,10 @@ SetWorker ( VOID *InternalData; UINTN MaxSize; + if (!FeaturePcdGet(PcdPeiPcdDatabaseSetEnabled)) { + return EFI_UNSUPPORTED; + } + // // TokenNumber Zero is reserved as PCD_INVALID_TOKEN_NUMBER. // We have to decrement TokenNumber by 1 to make it usable @@ -462,6 +466,10 @@ ExSetWorker ( { UINTN TokenNumber; + if (!FeaturePcdGet(PcdPeiPcdDatabaseSetEnabled)) { + return EFI_UNSUPPORTED; + } + TokenNumber = GetExPcdTokenNumber (Guid, ExTokenNumber); InvokeCallbackOnSet (ExTokenNumber, Guid, TokenNumber, Data, *Size); @@ -480,6 +488,11 @@ ExGetWorker ( IN UINTN GetSize ) { + if (!FeaturePcdGet (PcdPeiPcdDatabaseExEnabled)) { + ASSERT (FALSE); + return 0; + } + return GetWorker (GetExPcdTokenNumber (Guid, ExTokenNumber), GetSize); } -- cgit v1.2.3