MdePkg and MdeModulePkg Pcd: Implement PCD Driver for External PCD Database and SKU enable Feature.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Bob C Feng <bob.c.feng@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14857 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
There are no restrictions on the use of FeaturePcd(), FixedPcdGetXX(),
|
||||
PatchPcdGetXX(), and PatchPcdSetXX().
|
||||
|
||||
Copyright (c) 2006 - 2008, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
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
|
||||
@@ -532,6 +532,20 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#define PcdSetBool(TokenName, Value) _PCD_SET_MODE_BOOL_##TokenName ((Value))
|
||||
|
||||
|
||||
/**
|
||||
Retrieves a token number based on a GUID and a token name.
|
||||
|
||||
Returns the token number for the token specified by Guid and TokenName.
|
||||
|
||||
@param Guid Pointer to a 128-bit unique value that designates
|
||||
which namespace to retrieve a value from.
|
||||
@param TokenName The name of the PCD token to retrieve a current value for.
|
||||
|
||||
@return Return the token number.
|
||||
|
||||
**/
|
||||
#define PcdTokenEx(Guid,TokenName) _PCD_TOKEN_EX_##TokenName(Guid)
|
||||
|
||||
/**
|
||||
Retrieves an 8-bit PCD token value based on a GUID and a token name.
|
||||
|
||||
@@ -548,8 +562,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return An 8-bit PCD token value.
|
||||
|
||||
**/
|
||||
#define PcdGetEx8(Guid, TokenName) LibPcdGetEx8 ((Guid), _PCD_TOKEN_##TokenName)
|
||||
|
||||
#define PcdGetEx8(Guid, TokenName) LibPcdGetEx8 ((Guid), PcdTokenEx(Guid,TokenName))
|
||||
|
||||
/**
|
||||
Retrieves a 16-bit PCD token value based on a GUID and a token name.
|
||||
@@ -567,7 +580,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return A 16-bit PCD token value.
|
||||
|
||||
**/
|
||||
#define PcdGetEx16(Guid, TokenName) LibPcdGetEx16 ((Guid), _PCD_TOKEN_##TokenName)
|
||||
#define PcdGetEx16(Guid, TokenName) LibPcdGetEx16 ((Guid), PcdTokenEx(Guid,TokenName))
|
||||
|
||||
|
||||
/**
|
||||
@@ -586,7 +599,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return A 32-bit PCD token value.
|
||||
|
||||
**/
|
||||
#define PcdGetEx32(Guid, TokenName) LibPcdGetEx32 ((Guid), _PCD_TOKEN_##TokenName)
|
||||
#define PcdGetEx32(Guid, TokenName) LibPcdGetEx32 ((Guid), PcdTokenEx(Guid,TokenName))
|
||||
|
||||
|
||||
/**
|
||||
@@ -605,7 +618,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return A 64-bit PCD token value.
|
||||
|
||||
**/
|
||||
#define PcdGetEx64(Guid, TokenName) LibPcdGetEx64 ((Guid), _PCD_TOKEN_##TokenName)
|
||||
#define PcdGetEx64(Guid, TokenName) LibPcdGetEx64 ((Guid), PcdTokenEx(Guid,TokenName))
|
||||
|
||||
|
||||
/**
|
||||
@@ -624,7 +637,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return A pointer to a PCD token buffer.
|
||||
|
||||
**/
|
||||
#define PcdGetExPtr(Guid, TokenName) LibPcdGetExPtr ((Guid), _PCD_TOKEN_##TokenName)
|
||||
#define PcdGetExPtr(Guid, TokenName) LibPcdGetExPtr ((Guid), PcdTokenEx(Guid,TokenName))
|
||||
|
||||
|
||||
/**
|
||||
@@ -643,7 +656,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return A Boolean PCD token value.
|
||||
|
||||
**/
|
||||
#define PcdGetExBool(Guid, TokenName) LibPcdGetExBool ((Guid), _PCD_TOKEN_##TokenName)
|
||||
#define PcdGetExBool(Guid, TokenName) LibPcdGetExBool ((Guid), PcdTokenEx(Guid,TokenName))
|
||||
|
||||
|
||||
/**
|
||||
@@ -663,7 +676,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return Return the Value that was set.
|
||||
|
||||
**/
|
||||
#define PcdSetEx8(Guid, TokenName, Value) LibPcdSetEx8 ((Guid), _PCD_TOKEN_##TokenName, (Value))
|
||||
#define PcdSetEx8(Guid, TokenName, Value) LibPcdSetEx8 ((Guid), PcdTokenEx(Guid,TokenName), (Value))
|
||||
|
||||
|
||||
/**
|
||||
@@ -683,7 +696,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return Return the Value that was set.
|
||||
|
||||
**/
|
||||
#define PcdSetEx16(Guid, TokenName, Value) LibPcdSetEx16 ((Guid), _PCD_TOKEN_##TokenName, (Value))
|
||||
#define PcdSetEx16(Guid, TokenName, Value) LibPcdSetEx16 ((Guid), PcdTokenEx(Guid,TokenName), (Value))
|
||||
|
||||
|
||||
/**
|
||||
@@ -703,7 +716,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return Return the Value that was set.
|
||||
|
||||
**/
|
||||
#define PcdSetEx32(Guid, TokenName, Value) LibPcdSetEx32 ((Guid), _PCD_TOKEN_##TokenName, (Value))
|
||||
#define PcdSetEx32(Guid, TokenName, Value) LibPcdSetEx32 ((Guid), PcdTokenEx(Guid,TokenName), (Value))
|
||||
|
||||
|
||||
/**
|
||||
@@ -723,7 +736,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
@return Return the Value that was set.
|
||||
|
||||
**/
|
||||
#define PcdSetEx64(Guid, TokenName, Value) LibPcdSetEx64 ((Guid), _PCD_TOKEN_##TokenName, (Value))
|
||||
#define PcdSetEx64(Guid, TokenName, Value) LibPcdSetEx64 ((Guid), PcdTokenEx(Guid,TokenName), (Value))
|
||||
|
||||
|
||||
/**
|
||||
@@ -752,7 +765,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
#define PcdSetExPtr(Guid, TokenName, SizeOfBuffer, Buffer) \
|
||||
LibPcdSetExPtr ((Guid), _PCD_TOKEN_##TokenName, (SizeOfBuffer), (Buffer))
|
||||
LibPcdSetExPtr ((Guid), PcdTokenEx(Guid,TokenName), (SizeOfBuffer), (Buffer))
|
||||
|
||||
|
||||
/**
|
||||
@@ -773,7 +786,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
**/
|
||||
#define PcdSetExBool(Guid, TokenName, Value) \
|
||||
LibPcdSetExBool((Guid), _PCD_TOKEN_##TokenName, (Value))
|
||||
LibPcdSetExBool((Guid), PcdTokenEx(Guid,TokenName), (Value))
|
||||
|
||||
|
||||
/**
|
||||
|
@@ -6,7 +6,7 @@
|
||||
The interfaces for dynamic type PCD do not require the token space guid as parameter,
|
||||
but interfaces for dynamic-ex type PCD require token space guid as parameter.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
@@ -775,10 +775,8 @@ EFI_STATUS
|
||||
is being made to retrieve tokens from the default token space.
|
||||
@param[in, out] TokenNumber A pointer to the PCD token number to use to find the subsequent token number.
|
||||
|
||||
@retval EFI_SUCCESS The PCD service has retrieved the next valid token number.
|
||||
Or the input token number is already the last valid token number in the PCD database.
|
||||
In the later case, *TokenNumber is updated with the value of 0.
|
||||
@retval EFI_NOT_FOUND If this input token number and token namespace does not exist on the platform.
|
||||
@retval EFI_SUCCESS The PCD service has retrieved the next valid token number.
|
||||
@retval EFI_NOT_FOUND The PCD service could not find data from the requested token number.
|
||||
|
||||
**/
|
||||
typedef
|
||||
@@ -793,25 +791,17 @@ EFI_STATUS
|
||||
/**
|
||||
Retrieves the next valid PCD token namespace for a given namespace.
|
||||
|
||||
If *Guid is NULL, then the GUID of the first token space of the
|
||||
current platform is assigned to *Guid the function return EFI_SUCCESS.
|
||||
If *Guid is NULL and there is no namespace exist in the platform other than the default
|
||||
(NULL) tokennamespace, *Guid is unchanged and the function return EFI_SUCCESS.
|
||||
If this input token namespace is the last namespace on the platform,
|
||||
*Guid will be assigned to NULL and the function return EFI_SUCCESS.
|
||||
Gets the next valid token namespace for a given namespace. This is useful to traverse the valid
|
||||
token namespaces on a platform.
|
||||
|
||||
@param[in, out] Guid An indirect pointer to EFI_GUID. On input it designates a known
|
||||
token namespace from which the search will start. On output, it designates
|
||||
the next valid token namespace on the platform. If the input token namespace
|
||||
does not exist on the platform, an error is returned, and the value of *Guid is
|
||||
undefined.
|
||||
|
||||
@retval EFI_SUCCESS The PCD service has retrieved the next valid token namespace.
|
||||
Or the input token namespace is already the last valid token
|
||||
number in the PCD database. In the later case, *Guid is updated
|
||||
with the value of NULL. Or the input token name space is NULL and there
|
||||
is no valid token namespace other than the default namespace (NULL).
|
||||
@retval EFI_NOT_FOUND If the input token namespace does not exist on the platform.
|
||||
@param[in, out] Guid An indirect pointer to EFI_GUID. On input it designates a known token
|
||||
namespace from which the search will start. On output, it designates the next valid
|
||||
token namespace on the platform. If *Guid is NULL, then the GUID of the first token
|
||||
space of the current platform is returned. If the search cannot locate the next valid
|
||||
token namespace, an error is returned and the value of *Guid is undefined.
|
||||
|
||||
@retval EFI_SUCCESS The PCD service retrieved the value requested.
|
||||
@retval EFI_NOT_FOUND The PCD service could not find the next valid token namespace.
|
||||
|
||||
**/
|
||||
typedef
|
||||
|
@@ -1,18 +1,17 @@
|
||||
/** @file
|
||||
Platform Configuration Database (PCD) Protocol defined in PI 1.2 Vol3
|
||||
Platform Configuration Database (PCD) PPI defined in PI 1.2 Vol3
|
||||
|
||||
A platform database that contains a variety of current platform settings or
|
||||
directives that can be accessed by a driver or application.
|
||||
PI PCD protocol only provide the accessing interfaces for Dynamic-Ex type PCD.
|
||||
PI PCD ppi only provide the accessing interfaces for Dynamic-Ex type PCD.
|
||||
|
||||
Callers to this protocol must be at a TPL_APPLICATION task priority level.
|
||||
This is the base PCD service API that provides an abstraction for accessing configuration content in
|
||||
the platform. It a seamless mechanism for extracting information regardless of where the
|
||||
information is stored (such as in Read-only data, or an EFI Variable).
|
||||
This protocol allows access to data through size-granular APIs and provides a mechanism for a
|
||||
firmware component to monitor specific settings and be alerted when a setting is changed.
|
||||
|
||||
Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2009 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
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
|
||||
@@ -73,7 +72,7 @@ UINT8
|
||||
);
|
||||
|
||||
/**
|
||||
Retrieves the current byte-sized value for a PCD token number. If the TokenNumber is invalid,
|
||||
Retrieves the current word-sized value for a PCD token number. If the TokenNumber is invalid,
|
||||
the results are unpredictable.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates which namespace to extract the value from.
|
||||
@@ -375,7 +374,8 @@ EFI_STATUS
|
||||
know what token numbers are valid in the database.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates which namespace to extract the value from.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[in] TokenNumber A pointer to the PCD token number to use to find the subsequent token number. To
|
||||
retrieve the "first" token, have the pointer reference a TokenNumber value of 0.
|
||||
|
||||
@retval EFI_SUCCESS The PCD service has retrieved the value requested.
|
||||
@retval EFI_NOT_FOUND The PCD service could not find data from the requested token number.
|
||||
|
@@ -6,7 +6,7 @@
|
||||
The interfaces in dynamic type PCD do not require the token space guid as parameter,
|
||||
but interfaces in dynamic-ex type PCD require token space guid as parameter.
|
||||
|
||||
Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>
|
||||
This program and the accompanying materials are licensed and made available under
|
||||
the terms and conditions of the BSD License that accompanies this distribution.
|
||||
The full text of the license may be found at
|
||||
@@ -766,7 +766,7 @@ EFI_STATUS
|
||||
Retrieves the next valid token number in a given namespace.
|
||||
|
||||
This is useful since the PCD infrastructure contains a sparse list of token numbers,
|
||||
and one cannot know without examination or by deduction what token numbers are valid in the database.
|
||||
and one cannot a priori know what token numbers are valid in the database.
|
||||
|
||||
If TokenNumber is 0 and Guid is not NULL, then the first token from the token space specified by Guid is returned.
|
||||
If TokenNumber is not 0 and Guid is not NULL, then the next token in the token space specified by Guid is returned.
|
||||
@@ -784,10 +784,8 @@ EFI_STATUS
|
||||
@param[in,out] TokenNumber
|
||||
A pointer to the PCD token number to use to find the subsequent token number.
|
||||
|
||||
@retval EFI_SUCCESS The PCD service retrieved the next valid token number. Or the input token number
|
||||
is already the last valid token number in the PCD database.
|
||||
In the later case, *TokenNumber is updated with the value of 0.
|
||||
@retval EFI_NOT_FOUND If this input token number and token namespace does not exist on the platform.
|
||||
@retval EFI_SUCCESS The PCD service has retrieved the next valid token number.
|
||||
@retval EFI_NOT_FOUND The PCD service could not find data from the requested token number.
|
||||
|
||||
**/
|
||||
typedef
|
||||
@@ -802,22 +800,17 @@ EFI_STATUS
|
||||
/**
|
||||
Retrieves the next valid PCD token namespace for a given namespace.
|
||||
|
||||
@param[in, out] Guid An indirect pointer to EFI_GUID. On input it designates
|
||||
a known token namespace from which the search will start. On output,
|
||||
it designates the next valid token namespace on the platform. If the input
|
||||
token namespace does not exist on the platform, an error is returned and
|
||||
the value of *Guid is undefined. If *Guid is NULL, then the GUID of the
|
||||
first token space of the current platform is assigned to *Guid the function
|
||||
return EFI_SUCCESS. If *Guid is NULL and there is no namespace exist in
|
||||
the platform other than the default (NULL) token namespace, *Guid is unchanged
|
||||
and the function return EFI_SUCCESS. If this input token namespace is the last
|
||||
namespace on the platform, *Guid will be assigned to NULL and the function return
|
||||
EFI_SUCCESS.
|
||||
Gets the next valid token namespace for a given namespace. This is useful to traverse the valid
|
||||
token namespaces on a platform.
|
||||
|
||||
@retval EFI_SUCCESS The PCD service retrieved the next valid token space Guid.
|
||||
Or, the input token space Guid is already the last valid token space Guid
|
||||
in the PCD database. In the later case, *Guid is updated with the value of NULL.
|
||||
@retval EFI_NOT_FOUND If the input token namespace does not exist on the platform.
|
||||
@param[in, out] Guid An indirect pointer to EFI_GUID. On input it designates a known token namespace
|
||||
from which the search will start. On output, it designates the next valid token
|
||||
namespace on the platform. If *Guid is NULL, then the GUID of the first token
|
||||
space of the current platform is returned. If the search cannot locate the next valid
|
||||
token namespace, an error is returned and the value of *Guid is undefined.
|
||||
|
||||
@retval EFI_SUCCESS The PCD service retrieved the value requested.
|
||||
@retval EFI_NOT_FOUND The PCD service could not find the next valid token namespace.
|
||||
|
||||
**/
|
||||
typedef
|
||||
|
Reference in New Issue
Block a user