Add in function description and comments.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1026 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12 2006-07-17 03:43:28 +00:00
parent 56fe62ce9d
commit a7c5092fc5
7 changed files with 1102 additions and 35 deletions

View File

@ -80,10 +80,6 @@ PcdDxeInit (
BuildPcdDxeDataBase (); BuildPcdDxeDataBase ();
//
// BugBug Check if PcdDatabase is already installed.
//
Status = gBS->InstallProtocolInterface ( Status = gBS->InstallProtocolInterface (
&NewHandle, &NewHandle,
&gPcdProtocolGuid, &gPcdProtocolGuid,

View File

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Module Name: Module Name:
PcdEmulator.dxs Pcd.dxs
Abstract: Abstract:

View File

@ -1,5 +1,5 @@
/** @file /** @file
Private functions used by PCD DXE driver.s Private functions used by PCD DXE driver.
Copyright (c) 2006, Intel Corporation Copyright (c) 2006, Intel Corporation
All rights reserved. This program and the accompanying materials All rights reserved. This program and the accompanying materials
@ -17,11 +17,6 @@ Module Name: Service.c
#include "Service.h" #include "Service.h"
//
// Build Tool will generate DXE_PCD_DB_INIT_VALUE in Autogen.h
// Compression Algorithm will take care of the size optimization.
//
PCD_DATABASE * mPcdDatabase; PCD_DATABASE * mPcdDatabase;
LIST_ENTRY *mCallbackFnTable; LIST_ENTRY *mCallbackFnTable;
@ -341,7 +336,6 @@ BuildPcdDxeDataBase (
ASSERT (mPcdDatabase != NULL); ASSERT (mPcdDatabase != NULL);
GuidHob = GetFirstGuidHob (&gPcdDataBaseHobGuid); GuidHob = GetFirstGuidHob (&gPcdDataBaseHobGuid);
if (GuidHob != NULL) { if (GuidHob != NULL) {
// //

View File

@ -11,7 +11,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
Module Name: Module Name:
PcdEmulator.dxs Pcd.dxs
Abstract: Abstract:

View File

@ -20,12 +20,15 @@ Module Name: Service.c
The function registers the CallBackOnSet fucntion The function registers the CallBackOnSet fucntion
according to TokenNumber and EFI_GUID space. according to TokenNumber and EFI_GUID space.
@param[in] TokenNumber The token number. @param TokenNumber The token number.
@param[in] Guid The GUID space. @param Guid The GUID space.
@param[in] CallBackFunction The Callback function to be registered. @param CallBackFunction The Callback function to be registered.
@param Register To register or unregister the callback function.
@retval EFI_SUCCESS If the Callback function is registered. @retval EFI_SUCCESS If the Callback function is registered.
@retval EFI_NOT_FOUND If the PCD Entry is not found according to Token Number and GUID space. @retval EFI_NOT_FOUND If the PCD Entry is not found according to Token Number and GUID space.
@retval EFI_OUT_OF_RESOURCES If the callback function can't be registered because there is not free
slot left in the CallbackFnTable.
--*/ --*/
EFI_STATUS EFI_STATUS
PeiRegisterCallBackWorker ( PeiRegisterCallBackWorker (
@ -103,10 +106,9 @@ PeiRegisterCallBackWorker (
/** /**
The function builds the PCD database based on the The function builds the PCD database.
PCD_IMAGE on the flash.
@param[in] PcdImageOnFlash The PCD image on flash. @param VOID
@retval VOID @retval VOID
--*/ --*/
@ -144,13 +146,13 @@ BuildPcdDatabase (
The function is provided by PCD PEIM and PCD DXE driver to The function is provided by PCD PEIM and PCD DXE driver to
do the work of reading a HII variable from variable service. do the work of reading a HII variable from variable service.
@param[in] VariableGuid The Variable GUID. @param VariableGuid The Variable GUID.
@param[in] VariableName The Variable Name. @param VariableName The Variable Name.
@param[out] VariableData The output data. @param VariableData The output data.
@param[out] VariableSize The size of the variable. @param VariableSize The size of the variable.
@retval EFI_SUCCESS Operation successful. @retval EFI_SUCCESS Operation successful.
@retval EFI_SUCCESS Variablel not found. @retval EFI_NOT_FOUND Variablel not found.
--*/ --*/
EFI_STATUS EFI_STATUS
GetHiiVariable ( GetHiiVariable (
@ -580,6 +582,7 @@ GetWorker (
} }
UINTN UINTN
GetExPcdTokenNumber ( GetExPcdTokenNumber (
IN CONST EFI_GUID *Guid, IN CONST EFI_GUID *Guid,
@ -635,6 +638,7 @@ GetPcdDatabase (
} }
SKU_ID * SKU_ID *
GetSkuIdArray ( GetSkuIdArray (
IN UINTN LocalTokenNumberTableIdx, IN UINTN LocalTokenNumberTableIdx,

View File

@ -24,54 +24,190 @@ extern EFI_GUID gPcdPpiGuid;
#define PCD_INVALID_TOKEN_NUMBER ((UINTN) 0) #define PCD_INVALID_TOKEN_NUMBER ((UINTN) 0)
/**
Sets the SKU value for subsequent calls to set or get PCD token values.
SetSku() sets the SKU Id to be used for subsequent calls to set or get PCD values.
SetSku() is normally called only once by the system.
For each item (token), the database can hold a single value that applies to all SKUs,
or multiple values, where each value is associated with a specific SKU Id. Items with multiple,
SKU-specific values are called SKU enabled.
The SKU Id of zero is reserved as a default. The valid SkuId range is 1 to 255.
For tokens that are not SKU enabled, the system ignores any set SKU Id and works with the
single value for that token. For SKU-enabled tokens, the system will use the SKU Id set by the
last call to SetSku(). If no SKU Id is set or the currently set SKU Id isn't valid for the specified token,
the system uses the default SKU Id. If the system attempts to use the default SKU Id and no value has been
set for that Id, the results are unpredictable.
@param SkuId The SKU value that will be used when the PCD service will retrieve and
set values associated with a PCD token.
@retval VOID
**/
typedef typedef
VOID VOID
(EFIAPI *PCD_PPI_SET_SKU) ( (EFIAPI *PCD_PPI_SET_SKU) (
IN UINTN SkuId IN UINTN SkuId
); );
/**
Retrieves an 8-bit value for a given PCD token.
Retrieves the current byte-sized value for a PCD token number.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The UINT8 value.
**/
typedef typedef
UINT8 UINT8
(EFIAPI *PCD_PPI_GET8) ( (EFIAPI *PCD_PPI_GET8) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 16-bit value for a given PCD token.
Retrieves the current 16-bits value for a PCD token number.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The UINT16 value.
**/
typedef typedef
UINT16 UINT16
(EFIAPI *PCD_PPI_GET16) ( (EFIAPI *PCD_PPI_GET16) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 32-bit value for a given PCD token.
Retrieves the current 32-bits value for a PCD token number.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The UINT32 value.
**/
typedef typedef
UINT32 UINT32
(EFIAPI *PCD_PPI_GET32) ( (EFIAPI *PCD_PPI_GET32) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 64-bit value for a given PCD token.
Retrieves the current 64-bits value for a PCD token number.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The UINT64 value.
**/
typedef typedef
UINT64 UINT64
(EFIAPI *PCD_PPI_GET64) ( (EFIAPI *PCD_PPI_GET64) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves a pointer to a value for a given PCD token.
Retrieves the current pointer to the buffer for a PCD token number.
Do not make any assumptions about the alignment of the pointer that
is returned by this function call. If the TokenNumber is invalid,
the results are unpredictable.
@param TokenNumber The PCD token number.
@return The pointer to the buffer to be retrived.
**/
typedef typedef
VOID * VOID *
(EFIAPI *PCD_PPI_GET_POINTER) ( (EFIAPI *PCD_PPI_GET_POINTER) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves a Boolean value for a given PCD token.
Retrieves the current boolean value for a PCD token number.
Do not make any assumptions about the alignment of the pointer that
is returned by this function call. If the TokenNumber is invalid,
the results are unpredictable.
@param TokenNumber The PCD token number.
@return The Boolean value.
**/
typedef typedef
BOOLEAN BOOLEAN
(EFIAPI *PCD_PPI_GET_BOOLEAN) ( (EFIAPI *PCD_PPI_GET_BOOLEAN) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves the size of the value for a given PCD token.
Retrieves the current size of a particular PCD token.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The size of the value for the PCD token.
**/
typedef typedef
UINTN UINTN
(EFIAPI *PCD_PPI_GET_SIZE) ( (EFIAPI *PCD_PPI_GET_SIZE) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 8-bit value for a given PCD token.
Retrieves the 8-bit value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size 8-bit value for the PCD token.
**/
typedef typedef
UINT8 UINT8
(EFIAPI *PCD_PPI_GET_EX_8) ( (EFIAPI *PCD_PPI_GET_EX_8) (
@ -79,6 +215,22 @@ UINT8
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 16-bit value for a given PCD token.
Retrieves the 16-bit value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size 16-bit value for the PCD token.
**/
typedef typedef
UINT16 UINT16
(EFIAPI *PCD_PPI_GET_EX_16) ( (EFIAPI *PCD_PPI_GET_EX_16) (
@ -86,6 +238,22 @@ UINT16
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 32-bit value for a given PCD token.
Retrieves the 32-bit value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size 32-bit value for the PCD token.
**/
typedef typedef
UINT32 UINT32
(EFIAPI *PCD_PPI_GET_EX_32) ( (EFIAPI *PCD_PPI_GET_EX_32) (
@ -93,6 +261,22 @@ UINT32
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 64-bit value for a given PCD token.
Retrieves the 64-bit value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size 64-bit value for the PCD token.
**/
typedef typedef
UINT64 UINT64
(EFIAPI *PCD_PPI_GET_EX_64) ( (EFIAPI *PCD_PPI_GET_EX_64) (
@ -100,6 +284,22 @@ UINT64
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves a pointer to a value for a given PCD token.
Retrieves the current pointer to the buffer for a PCD token number.
Do not make any assumptions about the alignment of the pointer that
is returned by this function call. If the TokenNumber is invalid,
the results are unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The pointer to the buffer to be retrived.
**/
typedef typedef
VOID * VOID *
(EFIAPI *PCD_PPI_GET_EX_POINTER) ( (EFIAPI *PCD_PPI_GET_EX_POINTER) (
@ -107,6 +307,22 @@ VOID *
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an Boolean value for a given PCD token.
Retrieves the Boolean value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size Boolean value for the PCD token.
**/
typedef typedef
BOOLEAN BOOLEAN
(EFIAPI *PCD_PPI_GET_EX_BOOLEAN) ( (EFIAPI *PCD_PPI_GET_EX_BOOLEAN) (
@ -114,6 +330,20 @@ BOOLEAN
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves the size of the value for a given PCD token.
Retrieves the current size of a particular PCD token.
If the TokenNumber is invalid, the results are unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size of the value for the PCD token.
**/
typedef typedef
UINTN UINTN
(EFIAPI *PCD_PPI_GET_EX_SIZE) ( (EFIAPI *PCD_PPI_GET_EX_SIZE) (
@ -121,6 +351,25 @@ UINTN
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Sets an 8-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET8) ( (EFIAPI *PCD_PPI_SET8) (
@ -128,6 +377,25 @@ EFI_STATUS
IN UINT8 Value IN UINT8 Value
); );
/**
Sets an 16-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET16) ( (EFIAPI *PCD_PPI_SET16) (
@ -135,6 +403,25 @@ EFI_STATUS
IN UINT16 Value IN UINT16 Value
); );
/**
Sets an 32-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET32) ( (EFIAPI *PCD_PPI_SET32) (
@ -142,6 +429,25 @@ EFI_STATUS
IN UINT32 Value IN UINT32 Value
); );
/**
Sets an 64-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET64) ( (EFIAPI *PCD_PPI_SET64) (
@ -149,6 +455,30 @@ EFI_STATUS
IN UINT64 Value IN UINT64 Value
); );
/**
Sets a value of a specified size for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param SizeOfBuffer A pointer to the length of the value being set for the PCD token.
On input, if the SizeOfValue is greater than the maximum size supported
for this TokenNumber then the output value of SizeOfValue will reflect
the maximum size supported for this TokenNumber.
@param Buffer The buffer to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET_POINTER) ( (EFIAPI *PCD_PPI_SET_POINTER) (
@ -157,6 +487,25 @@ EFI_STATUS
IN VOID *Buffer IN VOID *Buffer
); );
/**
Sets an Boolean value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET_BOOLEAN) ( (EFIAPI *PCD_PPI_SET_BOOLEAN) (
@ -164,6 +513,26 @@ EFI_STATUS
IN BOOLEAN Value IN BOOLEAN Value
); );
/**
Sets an 8-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_8) ( (EFIAPI *PCD_PPI_SET_EX_8) (
@ -172,6 +541,26 @@ EFI_STATUS
IN UINT8 Value IN UINT8 Value
); );
/**
Sets an 16-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_16) ( (EFIAPI *PCD_PPI_SET_EX_16) (
@ -180,6 +569,26 @@ EFI_STATUS
IN UINT16 Value IN UINT16 Value
); );
/**
Sets an 32-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_32) ( (EFIAPI *PCD_PPI_SET_EX_32) (
@ -188,6 +597,26 @@ EFI_STATUS
IN UINT32 Value IN UINT32 Value
); );
/**
Sets an 64-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_64) ( (EFIAPI *PCD_PPI_SET_EX_64) (
@ -196,6 +625,30 @@ EFI_STATUS
IN UINT64 Value IN UINT64 Value
); );
/**
Sets a value of a specified size for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param SizeOfBuffer A pointer to the length of the value being set for the PCD token.
On input, if the SizeOfValue is greater than the maximum size supported
for this TokenNumber then the output value of SizeOfValue will reflect
the maximum size supported for this TokenNumber.
@param Buffer The buffer to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_POINTER) ( (EFIAPI *PCD_PPI_SET_EX_POINTER) (
@ -205,6 +658,26 @@ EFI_STATUS
IN VOID *Buffer IN VOID *Buffer
); );
/**
Sets an Boolean value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_SET_EX_BOOLEAN) ( (EFIAPI *PCD_PPI_SET_EX_BOOLEAN) (
@ -213,17 +686,19 @@ EFI_STATUS
IN BOOLEAN Value IN BOOLEAN Value
); );
/** /**
Callback on SET function prototype definition. Callback on SET function prototype definition.
@param[in] CallBackGuid The PCD token GUID being set. @param CallBackGuid The PCD token GUID being set.
@param[in] CallBackToken The PCD token number being set. @param CallBackToken The PCD token number being set.
@param[in] TokenData A pointer to the token data being set. @param TokenData A pointer to the token data being set.
@param[in] TokenDataSize The size, in bytes, of the data being set. @param TokenDataSize The size, in bytes, of the data being set.
@retval VOID @retval VOID
--*/ **/
typedef typedef
VOID VOID
(EFIAPI *PCD_PPI_CALLBACK) ( (EFIAPI *PCD_PPI_CALLBACK) (
@ -233,6 +708,20 @@ VOID
IN UINTN TokenDataSize IN UINTN TokenDataSize
); );
/**
Specifies a function to be called anytime the value of a designated token is changed.
@param TokenNumber The PCD token number.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param CallBackFunction The function prototype called when the value associated with the CallBackToken is set.
@retval EFI_SUCCESS The PCD service has successfully established a call event
for the CallBackToken requested.
@retval EFI_NOT_FOUND The PCD service could not find the referenced token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_CALLBACK_ONSET) ( (EFIAPI *PCD_PPI_CALLBACK_ONSET) (
@ -241,6 +730,20 @@ EFI_STATUS
IN PCD_PPI_CALLBACK CallBackFunction IN PCD_PPI_CALLBACK CallBackFunction
); );
/**
Cancels a previously set callback function for a particular PCD token number.
@param TokenNumber The PCD token number.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param CallBackFunction The function prototype called when the value associated with the CallBackToken is set.
@retval EFI_SUCCESS The PCD service has successfully established a call event
for the CallBackToken requested.
@retval EFI_NOT_FOUND The PCD service could not find the referenced token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_CANCEL_CALLBACK) ( (EFIAPI *PCD_PPI_CANCEL_CALLBACK) (
@ -249,6 +752,19 @@ EFI_STATUS
IN PCD_PPI_CALLBACK CallBackFunction IN PCD_PPI_CALLBACK CallBackFunction
); );
/**
Retrieves the next valid PCD token for a given namespace.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param 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 retrieved the value requested.
@retval EFI_NOT_FOUND The PCD service could not find data from the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_GET_NEXT_TOKEN) ( (EFIAPI *PCD_PPI_GET_NEXT_TOKEN) (
@ -256,12 +772,35 @@ EFI_STATUS
IN OUT UINTN *TokenNumber IN OUT UINTN *TokenNumber
); );
/**
Retrieves the next valid PCD token namespace for a given namespace.
@param 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 this input token namespace is the last tokenspace on the platform,
*Guid will be assigned to NULL and the function return EFI_SUCCESS.
If the search cannot locate the input 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 input token namespace.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PPI_GET_NEXT_TOKENSPACE) ( (EFIAPI *PCD_PPI_GET_NEXT_TOKENSPACE) (
IN OUT CONST EFI_GUID **Guid IN OUT CONST EFI_GUID **Guid
); );
//
// Interface structure for the PCD PPI
//
typedef struct { typedef struct {
PCD_PPI_SET_SKU SetSku; PCD_PPI_SET_SKU SetSku;

View File

@ -24,54 +24,189 @@ extern EFI_GUID gPcdProtocolGuid;
#define PCD_INVALID_TOKEN_NUMBER ((UINTN) 0) #define PCD_INVALID_TOKEN_NUMBER ((UINTN) 0)
/**
Sets the SKU value for subsequent calls to set or get PCD token values.
SetSku() sets the SKU Id to be used for subsequent calls to set or get PCD values.
SetSku() is normally called only once by the system.
For each item (token), the database can hold a single value that applies to all SKUs,
or multiple values, where each value is associated with a specific SKU Id. Items with multiple,
SKU-specific values are called SKU enabled.
The SKU Id of zero is reserved as a default. The valid SkuId range is 1 to 255.
For tokens that are not SKU enabled, the system ignores any set SKU Id and works with the
single value for that token. For SKU-enabled tokens, the system will use the SKU Id set by the
last call to SetSku(). If no SKU Id is set or the currently set SKU Id isn't valid for the specified token,
the system uses the default SKU Id. If the system attempts to use the default SKU Id and no value has been
set for that Id, the results are unpredictable.
@param SkuId The SKU value that will be used when the PCD service will retrieve and
set values associated with a PCD token.
@retval VOID
**/
typedef typedef
VOID VOID
(EFIAPI *PCD_PROTOCOL_SET_SKU) ( (EFIAPI *PCD_PROTOCOL_SET_SKU) (
IN UINTN SkuId IN UINTN SkuId
); );
/**
Retrieves an 8-bit value for a given PCD token.
Retrieves the current byte-sized value for a PCD token number.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The UINT8 value.
**/
typedef typedef
UINT8 UINT8
(EFIAPI *PCD_PROTOCOL_GET8) ( (EFIAPI *PCD_PROTOCOL_GET8) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 16-bit value for a given PCD token.
Retrieves the current 16-bits value for a PCD token number.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The UINT16 value.
**/
typedef typedef
UINT16 UINT16
(EFIAPI *PCD_PROTOCOL_GET16) ( (EFIAPI *PCD_PROTOCOL_GET16) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 32-bit value for a given PCD token.
Retrieves the current 32-bits value for a PCD token number.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The UINT32 value.
**/
typedef typedef
UINT32 UINT32
(EFIAPI *PCD_PROTOCOL_GET32) ( (EFIAPI *PCD_PROTOCOL_GET32) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 64-bit value for a given PCD token.
Retrieves the current 64-bits value for a PCD token number.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The UINT64 value.
**/
typedef typedef
UINT64 UINT64
(EFIAPI *PCD_PROTOCOL_GET64) ( (EFIAPI *PCD_PROTOCOL_GET64) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves a pointer to a value for a given PCD token.
Retrieves the current pointer to the buffer for a PCD token number.
Do not make any assumptions about the alignment of the pointer that
is returned by this function call. If the TokenNumber is invalid,
the results are unpredictable.
@param TokenNumber The PCD token number.
@return The pointer to the buffer to be retrived.
**/
typedef typedef
VOID * VOID *
(EFIAPI *PCD_PROTOCOL_GET_POINTER) ( (EFIAPI *PCD_PROTOCOL_GET_POINTER) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves a Boolean value for a given PCD token.
Retrieves the current boolean value for a PCD token number.
Do not make any assumptions about the alignment of the pointer that
is returned by this function call. If the TokenNumber is invalid,
the results are unpredictable.
@param TokenNumber The PCD token number.
@return The Boolean value.
**/
typedef typedef
BOOLEAN BOOLEAN
(EFIAPI *PCD_PROTOCOL_GET_BOOLEAN) ( (EFIAPI *PCD_PROTOCOL_GET_BOOLEAN) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves the size of the value for a given PCD token.
Retrieves the current size of a particular PCD token.
If the TokenNumber is invalid, the results are unpredictable.
@param TokenNumber The PCD token number.
@return The size of the value for the PCD token.
**/
typedef typedef
UINTN UINTN
(EFIAPI *PCD_PROTOCOL_GET_SIZE) ( (EFIAPI *PCD_PROTOCOL_GET_SIZE) (
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 8-bit value for a given PCD token.
Retrieves the 8-bit value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size 8-bit value for the PCD token.
**/
typedef typedef
UINT8 UINT8
(EFIAPI *PCD_PROTOCOL_GET_EX_8) ( (EFIAPI *PCD_PROTOCOL_GET_EX_8) (
@ -79,6 +214,22 @@ UINT8
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 16-bit value for a given PCD token.
Retrieves the 16-bit value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size 16-bit value for the PCD token.
**/
typedef typedef
UINT16 UINT16
(EFIAPI *PCD_PROTOCOL_GET_EX_16) ( (EFIAPI *PCD_PROTOCOL_GET_EX_16) (
@ -86,13 +237,44 @@ UINT16
IN UINTN TokenNumber IN UINTN TokenNumber
); );
typedef
/**
Retrieves an 32-bit value for a given PCD token.
Retrieves the 32-bit value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size 32-bit value for the PCD token.
**/typedef
UINT32 UINT32
(EFIAPI *PCD_PROTOCOL_GET_EX_32) ( (EFIAPI *PCD_PROTOCOL_GET_EX_32) (
IN CONST EFI_GUID *Guid, IN CONST EFI_GUID *Guid,
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an 64-bit value for a given PCD token.
Retrieves the 64-bit value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size 64-bit value for the PCD token.
**/
typedef typedef
UINT64 UINT64
(EFIAPI *PCD_PROTOCOL_GET_EX_64) ( (EFIAPI *PCD_PROTOCOL_GET_EX_64) (
@ -100,6 +282,22 @@ UINT64
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves a pointer to a value for a given PCD token.
Retrieves the current pointer to the buffer for a PCD token number.
Do not make any assumptions about the alignment of the pointer that
is returned by this function call. If the TokenNumber is invalid,
the results are unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The pointer to the buffer to be retrived.
**/
typedef typedef
VOID * VOID *
(EFIAPI *PCD_PROTOCOL_GET_EX_POINTER) ( (EFIAPI *PCD_PROTOCOL_GET_EX_POINTER) (
@ -107,6 +305,22 @@ VOID *
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves an Boolean value for a given PCD token.
Retrieves the Boolean value of a particular PCD token.
If the TokenNumber is invalid or the token space
specified by Guid does not exist, the results are
unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size Boolean value for the PCD token.
**/
typedef typedef
BOOLEAN BOOLEAN
(EFIAPI *PCD_PROTOCOL_GET_EX_BOOLEAN) ( (EFIAPI *PCD_PROTOCOL_GET_EX_BOOLEAN) (
@ -114,6 +328,20 @@ BOOLEAN
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Retrieves the size of the value for a given PCD token.
Retrieves the current size of a particular PCD token.
If the TokenNumber is invalid, the results are unpredictable.
@param Guid The token space for the token number.
@param TokenNumber The PCD token number.
@return The size of the value for the PCD token.
**/
typedef typedef
UINTN UINTN
(EFIAPI *PCD_PROTOCOL_GET_EX_SIZE) ( (EFIAPI *PCD_PROTOCOL_GET_EX_SIZE) (
@ -121,6 +349,25 @@ UINTN
IN UINTN TokenNumber IN UINTN TokenNumber
); );
/**
Sets an 8-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET8) ( (EFIAPI *PCD_PROTOCOL_SET8) (
@ -128,6 +375,25 @@ EFI_STATUS
IN UINT8 Value IN UINT8 Value
); );
/**
Sets an 16-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET16) ( (EFIAPI *PCD_PROTOCOL_SET16) (
@ -135,6 +401,25 @@ EFI_STATUS
IN UINT16 Value IN UINT16 Value
); );
/**
Sets an 32-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET32) ( (EFIAPI *PCD_PROTOCOL_SET32) (
@ -142,6 +427,25 @@ EFI_STATUS
IN UINT32 Value IN UINT32 Value
); );
/**
Sets an 64-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET64) ( (EFIAPI *PCD_PROTOCOL_SET64) (
@ -149,6 +453,29 @@ EFI_STATUS
IN UINT64 Value IN UINT64 Value
); );
/**
Sets a value of a specified size for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param SizeOfBuffer A pointer to the length of the value being set for the PCD token.
On input, if the SizeOfValue is greater than the maximum size supported
for this TokenNumber then the output value of SizeOfValue will reflect
the maximum size supported for this TokenNumber.
@param Buffer The buffer to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET_POINTER) ( (EFIAPI *PCD_PROTOCOL_SET_POINTER) (
@ -157,6 +484,25 @@ EFI_STATUS
IN VOID *Buffer IN VOID *Buffer
); );
/**
Sets an Boolean value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET_BOOLEAN) ( (EFIAPI *PCD_PROTOCOL_SET_BOOLEAN) (
@ -164,6 +510,26 @@ EFI_STATUS
IN BOOLEAN Value IN BOOLEAN Value
); );
/**
Sets an 8-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET_EX_8) ( (EFIAPI *PCD_PROTOCOL_SET_EX_8) (
@ -172,6 +538,26 @@ EFI_STATUS
IN UINT8 Value IN UINT8 Value
); );
/**
Sets an 16-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET_EX_16) ( (EFIAPI *PCD_PROTOCOL_SET_EX_16) (
@ -180,6 +566,26 @@ EFI_STATUS
IN UINT16 Value IN UINT16 Value
); );
/**
Sets an 32-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET_EX_32) ( (EFIAPI *PCD_PROTOCOL_SET_EX_32) (
@ -188,6 +594,26 @@ EFI_STATUS
IN UINT32 Value IN UINT32 Value
); );
/**
Sets an 64-bit value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET_EX_64) ( (EFIAPI *PCD_PROTOCOL_SET_EX_64) (
@ -196,6 +622,30 @@ EFI_STATUS
IN UINT64 Value IN UINT64 Value
); );
/**
Sets a value of a specified size for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param SizeOfBuffer A pointer to the length of the value being set for the PCD token.
On input, if the SizeOfValue is greater than the maximum size supported
for this TokenNumber then the output value of SizeOfValue will reflect
the maximum size supported for this TokenNumber.
@param Buffer The buffer to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET_EX_POINTER) ( (EFIAPI *PCD_PROTOCOL_SET_EX_POINTER) (
@ -205,6 +655,26 @@ EFI_STATUS
IN VOID *Buffer IN VOID *Buffer
); );
/**
Sets an Boolean value for a given PCD token.
When the PCD service sets a value, it will check to ensure that the
size of the value being set is compatible with the Token's existing definition.
If it is not, an error will be returned.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param TokenNumber The PCD token number.
@param Value The value to set for the PCD token.
@retval EFI_SUCCESS Procedure returned successfully.
@retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
being set was incompatible with a call to this function.
Use GetSize() to retrieve the size of the target data.
@retval EFI_NOT_FOUND The PCD service could not find the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_SET_EX_BOOLEAN) ( (EFIAPI *PCD_PROTOCOL_SET_EX_BOOLEAN) (
@ -213,17 +683,19 @@ EFI_STATUS
IN BOOLEAN Value IN BOOLEAN Value
); );
/** /**
Callback on SET function prototype definition. Callback on SET function prototype definition.
@param[in] CallBackGuid The PCD token GUID being set. @param CallBackGuid The PCD token GUID being set.
@param[in] CallBackToken The PCD token number being set. @param CallBackToken The PCD token number being set.
@param[in] TokenData A pointer to the token data being set. @param TokenData A pointer to the token data being set.
@param[in] TokenDataSize The size, in bytes, of the data being set. @param TokenDataSize The size, in bytes, of the data being set.
@retval VOID @retval VOID
--*/ **/
typedef typedef
VOID VOID
(EFIAPI *PCD_PROTOCOL_CALLBACK) ( (EFIAPI *PCD_PROTOCOL_CALLBACK) (
@ -233,6 +705,20 @@ VOID
IN UINTN TokenDataSize IN UINTN TokenDataSize
); );
/**
Specifies a function to be called anytime the value of a designated token is changed.
@param TokenNumber The PCD token number.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param CallBackFunction The function prototype called when the value associated with the CallBackToken is set.
@retval EFI_SUCCESS The PCD service has successfully established a call event
for the CallBackToken requested.
@retval EFI_NOT_FOUND The PCD service could not find the referenced token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_CALLBACK_ONSET) ( (EFIAPI *PCD_PROTOCOL_CALLBACK_ONSET) (
@ -241,6 +727,20 @@ EFI_STATUS
IN PCD_PROTOCOL_CALLBACK CallBackFunction IN PCD_PROTOCOL_CALLBACK CallBackFunction
); );
/**
Cancels a previously set callback function for a particular PCD token number.
@param TokenNumber The PCD token number.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param CallBackFunction The function prototype called when the value associated with the CallBackToken is set.
@retval EFI_SUCCESS The PCD service has successfully established a call event
for the CallBackToken requested.
@retval EFI_NOT_FOUND The PCD service could not find the referenced token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_CANCEL_CALLBACK) ( (EFIAPI *PCD_PROTOCOL_CANCEL_CALLBACK) (
@ -249,6 +749,19 @@ EFI_STATUS
IN PCD_PROTOCOL_CALLBACK CallBackFunction IN PCD_PROTOCOL_CALLBACK CallBackFunction
); );
/**
Retrieves the next valid PCD token for a given namespace.
@param Guid The 128-bit unique value that designates the namespace from which to extract the value.
@param 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 retrieved the value requested.
@retval EFI_NOT_FOUND The PCD service could not find data from the requested token number.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_GET_NEXT_TOKEN) ( (EFIAPI *PCD_PROTOCOL_GET_NEXT_TOKEN) (
@ -257,6 +770,23 @@ EFI_STATUS
); );
/**
Retrieves the next valid PCD token namespace for a given namespace.
@param 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 this input token namespace is the last tokenspace on the platform,
*Guid will be assigned to NULL and the function return EFI_SUCCESS.
If the search cannot locate the input 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 input token namespace.
**/
typedef typedef
EFI_STATUS EFI_STATUS
(EFIAPI *PCD_PROTOCOL_GET_NEXT_TOKENSPACE) ( (EFIAPI *PCD_PROTOCOL_GET_NEXT_TOKENSPACE) (
@ -264,6 +794,10 @@ EFI_STATUS
); );
//
// Interface structure for the PCD Protocol
//
typedef struct { typedef struct {
PCD_PROTOCOL_SET_SKU SetSku; PCD_PROTOCOL_SET_SKU SetSku;