mirror of https://github.com/acidanthera/audk.git
Code scrub for PCD PEIM.
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5461 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
9fc787529c
commit
fc547e0863
|
@ -1,5 +1,7 @@
|
|||
/** @file PCD PEIM
|
||||
|
||||
/** @file
|
||||
PCD PEIM manage PCD database to manage all dynamic PCD in PEI phase. PCD PEIM
|
||||
also produce 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
|
||||
|
@ -9,14 +11,10 @@ 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.
|
||||
|
||||
|
||||
Module Name: Pcd.c
|
||||
|
||||
**/
|
||||
|
||||
#include "Service.h"
|
||||
|
||||
|
||||
PCD_PPI mPcdPpiInstance = {
|
||||
PeiPcdSetSku,
|
||||
|
||||
|
@ -56,16 +54,23 @@ PCD_PPI mPcdPpiInstance = {
|
|||
PeiPcdGetNextTokenSpace
|
||||
};
|
||||
|
||||
|
||||
|
||||
STATIC EFI_PEI_PPI_DESCRIPTOR mPpiPCD = {
|
||||
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
|
||||
&gPcdPpiGuid,
|
||||
&mPcdPpiInstance
|
||||
};
|
||||
|
||||
/**
|
||||
Main entry for PCD PEIM driver.
|
||||
|
||||
This routine initialize the PCD database for PEI phase and install PCD_PPI.
|
||||
|
||||
@param FfsHeader Pointer to PEIM FFS header image
|
||||
@param PeiServices Pointer to EFI_PEI_SERVICES
|
||||
|
||||
@return Status of install PCD_PPI
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PcdPeimInit (
|
||||
|
@ -73,17 +78,34 @@ PcdPeimInit (
|
|||
IN EFI_PEI_SERVICES **PeiServices
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
|
||||
BuildPcdDatabase ();
|
||||
|
||||
Status = PeiServicesInstallPpi (&mPpiPCD);
|
||||
|
||||
ASSERT_EFI_ERROR (Status);
|
||||
|
||||
return EFI_SUCCESS;
|
||||
return PeiServicesInstallPpi (&mPpiPCD);
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] SkuId The SKU value that will be used when the PCD service will retrieve and
|
||||
set values associated with a PCD token.
|
||||
|
||||
@retval VOID
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
PeiPcdSetSku (
|
||||
|
@ -96,8 +118,17 @@ PeiPcdSetSku (
|
|||
return;
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The UINT8 value.
|
||||
|
||||
**/
|
||||
UINT8
|
||||
EFIAPI
|
||||
PeiPcdGet8 (
|
||||
|
@ -107,8 +138,17 @@ PeiPcdGet8 (
|
|||
return *((UINT8 *) GetWorker (TokenNumber, sizeof (UINT8)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The UINT16 value.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
PeiPcdGet16 (
|
||||
|
@ -118,8 +158,17 @@ PeiPcdGet16 (
|
|||
return ReadUnaligned16 (GetWorker (TokenNumber, sizeof (UINT16)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The UINT32 value.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
PeiPcdGet32 (
|
||||
|
@ -129,8 +178,17 @@ PeiPcdGet32 (
|
|||
return ReadUnaligned32 (GetWorker (TokenNumber, sizeof (UINT32)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The UINT64 value.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
PeiPcdGet64 (
|
||||
|
@ -140,8 +198,19 @@ PeiPcdGet64 (
|
|||
return ReadUnaligned64 (GetWorker (TokenNumber, sizeof (UINT64)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The pointer to the buffer to be retrived.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
PeiPcdGetPtr (
|
||||
|
@ -151,8 +220,19 @@ PeiPcdGetPtr (
|
|||
return GetWorker (TokenNumber, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The Boolean value.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
PeiPcdGetBool (
|
||||
|
@ -162,8 +242,17 @@ PeiPcdGetBool (
|
|||
return *((BOOLEAN *) GetWorker (TokenNumber, sizeof (BOOLEAN)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The size of the value for the PCD token.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
PeiPcdGetSize (
|
||||
|
@ -209,8 +298,20 @@ PeiPcdGetSize (
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
|
||||
@return The size 8-bit value for the PCD token.
|
||||
|
||||
**/
|
||||
UINT8
|
||||
EFIAPI
|
||||
PeiPcdGet8Ex (
|
||||
|
@ -221,8 +322,20 @@ PeiPcdGet8Ex (
|
|||
return *((UINT8 *) ExGetWorker (Guid, ExTokenNumber, sizeof (UINT8)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
|
||||
@return The size 16-bit value for the PCD token.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
PeiPcdGet16Ex (
|
||||
|
@ -233,8 +346,20 @@ PeiPcdGet16Ex (
|
|||
return ReadUnaligned16 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT16)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
|
||||
@return The size 32-bit value for the PCD token.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
PeiPcdGet32Ex (
|
||||
|
@ -245,8 +370,20 @@ PeiPcdGet32Ex (
|
|||
return ReadUnaligned32 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT32)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
|
||||
@return The size 64-bit value for the PCD token.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
PeiPcdGet64Ex (
|
||||
|
@ -257,8 +394,20 @@ PeiPcdGet64Ex (
|
|||
return ReadUnaligned64 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT64)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
|
||||
@return The pointer to the buffer to be retrived.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
PeiPcdGetPtrEx (
|
||||
|
@ -269,8 +418,20 @@ PeiPcdGetPtrEx (
|
|||
return ExGetWorker (Guid, ExTokenNumber, 0);
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
|
||||
@return The size Boolean value for the PCD token.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
PeiPcdGetBoolEx (
|
||||
|
@ -281,8 +442,18 @@ PeiPcdGetBoolEx (
|
|||
return *((BOOLEAN *) ExGetWorker (Guid, ExTokenNumber, sizeof (BOOLEAN)));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
|
||||
@return The size of the value for the PCD token.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
PeiPcdGetSizeEx (
|
||||
|
@ -297,8 +468,23 @@ PeiPcdGetSizeEx (
|
|||
return PeiPcdGetSize (GetExPcdTokenNumber (Guid, ExTokenNumber));
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet8 (
|
||||
|
@ -309,8 +495,23 @@ PeiPcdSet8 (
|
|||
return SetValueWorker (TokenNumber, &Value, sizeof (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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet16 (
|
||||
|
@ -321,8 +522,23 @@ PeiPcdSet16 (
|
|||
return SetValueWorker (TokenNumber, &Value, sizeof (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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet32 (
|
||||
|
@ -333,8 +549,23 @@ PeiPcdSet32 (
|
|||
return SetValueWorker (TokenNumber, &Value, sizeof (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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet64 (
|
||||
|
@ -345,7 +576,27 @@ PeiPcdSet64 (
|
|||
return SetValueWorker (TokenNumber, &Value, sizeof (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[in] TokenNumber The PCD token number.
|
||||
@param[in, out] 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[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSetPtr (
|
||||
|
@ -357,8 +608,23 @@ PeiPcdSetPtr (
|
|||
return SetWorker (TokenNumber, Buffer, SizeOfBuffer, TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSetBool (
|
||||
|
@ -369,8 +635,24 @@ PeiPcdSetBool (
|
|||
return SetValueWorker (TokenNumber, &Value, sizeof (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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet8Ex (
|
||||
|
@ -382,8 +664,24 @@ PeiPcdSet8Ex (
|
|||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet16Ex (
|
||||
|
@ -395,8 +693,24 @@ PeiPcdSet16Ex (
|
|||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet32Ex (
|
||||
|
@ -408,8 +722,24 @@ PeiPcdSet32Ex (
|
|||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet64Ex (
|
||||
|
@ -421,22 +751,58 @@ PeiPcdSet64Ex (
|
|||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
@param[in, out] 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[in] Value 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSetPtrEx (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN ExTokenNumber,
|
||||
IN UINTN *SizeOfBuffer,
|
||||
IN VOID *Value
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN ExTokenNumber,
|
||||
IN OUT UINTN *SizeOfBuffer,
|
||||
IN VOID *Value
|
||||
)
|
||||
{
|
||||
return ExSetWorker (ExTokenNumber, Guid, Value, SizeOfBuffer, TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
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 [in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param [in] ExTokenNumber The PCD token number.
|
||||
@param [in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSetBoolEx (
|
||||
|
@ -448,9 +814,18 @@ PeiPcdSetBoolEx (
|
|||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
|
||||
}
|
||||
|
||||
/**
|
||||
Specifies a function to be called anytime the value of a designated token is changed.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiRegisterCallBackOnSet (
|
||||
|
@ -468,8 +843,18 @@ PeiRegisterCallBackOnSet (
|
|||
return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, TRUE);
|
||||
}
|
||||
|
||||
/**
|
||||
Cancels a previously set callback function for a particular PCD token number.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] ExTokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PcdUnRegisterCallBackOnSet (
|
||||
|
@ -487,8 +872,24 @@ PcdUnRegisterCallBackOnSet (
|
|||
return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
Retrieves the next valid PCD token for a given namespace.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in, out] TokenNumber A pointer to the PCD token number to use to find the subsequent token number.
|
||||
If the input token namespace or token number does not exist on the platform,
|
||||
an error is returned and the value of *TokenNumber is undefined. To retrieve the "first" token,
|
||||
have the pointer reference a TokenNumber value of 0. If the input token number is 0 and
|
||||
there is no valid token number for this token namespace, *TokenNumber will be assigned to
|
||||
0 and the function return EFI_SUCCESS. If the token number is the last valid token number,
|
||||
*TokenNumber will be assigned to 0 and the function return EFI_SUCCESS.
|
||||
|
||||
@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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdGetNextToken (
|
||||
|
@ -500,7 +901,7 @@ PeiPcdGetNextToken (
|
|||
PEI_PCD_DATABASE *PeiPcdDb;
|
||||
EFI_GUID *MatchGuid;
|
||||
DYNAMICEX_MAPPING *ExMapTable;
|
||||
UINTN i;
|
||||
UINTN Index;
|
||||
BOOLEAN Found;
|
||||
BOOLEAN PeiExMapTableEmpty;
|
||||
|
||||
|
@ -547,8 +948,8 @@ PeiPcdGetNextToken (
|
|||
//
|
||||
// Locate the GUID in ExMapTable first.
|
||||
//
|
||||
for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
||||
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
|
||||
for (Index = 0; Index < PEI_EXMAPPING_TABLE_SIZE; Index++) {
|
||||
if (ExMapTable[Index].ExGuidIndex == GuidTableIdx) {
|
||||
Found = TRUE;
|
||||
break;
|
||||
}
|
||||
|
@ -556,22 +957,22 @@ PeiPcdGetNextToken (
|
|||
|
||||
if (Found) {
|
||||
if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {
|
||||
*TokenNumber = ExMapTable[i].ExTokenNumber;
|
||||
*TokenNumber = ExMapTable[Index].ExTokenNumber;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
|
||||
for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
||||
if (ExMapTable[i].ExTokenNumber == *TokenNumber) {
|
||||
i++;
|
||||
if (i == PEI_EXMAPPING_TABLE_SIZE) {
|
||||
for ( ; Index < PEI_EXMAPPING_TABLE_SIZE; Index++) {
|
||||
if (ExMapTable[Index].ExTokenNumber == *TokenNumber) {
|
||||
Index++;
|
||||
if (Index == PEI_EXMAPPING_TABLE_SIZE) {
|
||||
//
|
||||
// Exceed the length of ExMap Table
|
||||
//
|
||||
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
|
||||
*TokenNumber = ExMapTable[i].ExTokenNumber;
|
||||
if (ExMapTable[Index].ExGuidIndex == GuidTableIdx) {
|
||||
*TokenNumber = ExMapTable[Index].ExTokenNumber;
|
||||
return EFI_SUCCESS;
|
||||
} else {
|
||||
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
||||
|
@ -586,8 +987,27 @@ PeiPcdGetNextToken (
|
|||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
/**
|
||||
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) 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.
|
||||
|
||||
@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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdGetNextTokenSpace (
|
||||
|
@ -598,7 +1018,7 @@ PeiPcdGetNextTokenSpace (
|
|||
EFI_GUID *MatchGuid;
|
||||
PEI_PCD_DATABASE *PeiPcdDb;
|
||||
DYNAMICEX_MAPPING *ExMapTable;
|
||||
UINTN i;
|
||||
UINTN Index;
|
||||
BOOLEAN Found;
|
||||
BOOLEAN PeiExMapTableEmpty;
|
||||
|
||||
|
@ -644,18 +1064,18 @@ PeiPcdGetNextTokenSpace (
|
|||
GuidTableIdx = MatchGuid - PeiPcdDb->Init.GuidTable;
|
||||
|
||||
Found = FALSE;
|
||||
for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
||||
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
|
||||
for (Index = 0; Index < PEI_EXMAPPING_TABLE_SIZE; Index++) {
|
||||
if (ExMapTable[Index].ExGuidIndex == GuidTableIdx) {
|
||||
Found = TRUE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (Found) {
|
||||
i++;
|
||||
for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++ ) {
|
||||
if (ExMapTable[i].ExGuidIndex != GuidTableIdx ) {
|
||||
*Guid = &PeiPcdDb->Init.GuidTable[ExMapTable[i].ExGuidIndex];
|
||||
Index++;
|
||||
for ( ; Index < PEI_EXMAPPING_TABLE_SIZE; Index++ ) {
|
||||
if (ExMapTable[Index].ExGuidIndex != GuidTableIdx ) {
|
||||
*Guid = &PeiPcdDb->Init.GuidTable[ExMapTable[Index].ExGuidIndex];
|
||||
return EFI_SUCCESS;
|
||||
}
|
||||
}
|
||||
|
@ -667,6 +1087,19 @@ PeiPcdGetNextTokenSpace (
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
Get PCD value's size for POINTER type PCD.
|
||||
|
||||
The POINTER type PCD's value will be stored into a buffer in specificed size.
|
||||
The max size of this PCD's value is described in PCD's definition in DEC file.
|
||||
|
||||
@param LocalTokenNumberTableIdx Index of PCD token number in PCD token table
|
||||
@param MaxSize Maxmium size of PCD's value
|
||||
@param Database Pcd database in PEI phase.
|
||||
|
||||
@return PCD value's size for POINTER type PCD.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
GetPtrTypeSize (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
|
@ -678,7 +1111,7 @@ GetPtrTypeSize (
|
|||
UINTN LocalTokenNumber;
|
||||
SKU_ID *SkuIdTable;
|
||||
SIZE_INFO *SizeTable;
|
||||
UINTN i;
|
||||
UINTN Index;
|
||||
|
||||
SizeTableIdx = GetSizeTableIndex (LocalTokenNumberTableIdx, Database);
|
||||
|
||||
|
@ -693,7 +1126,7 @@ GetPtrTypeSize (
|
|||
// SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
|
||||
// PCD entry.
|
||||
//
|
||||
if (LocalTokenNumber & PCD_TYPE_VPD) {
|
||||
if ((LocalTokenNumber & PCD_TYPE_VPD) != 0) {
|
||||
//
|
||||
// We have only one entry for VPD enabled PCD entry:
|
||||
// 1) MAX Size.
|
||||
|
@ -715,9 +1148,9 @@ GetPtrTypeSize (
|
|||
// 2) Current Size for each SKU_ID (It is equal to MaxSku).
|
||||
//
|
||||
SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, Database);
|
||||
for (i = 0; i < SkuIdTable[0]; i++) {
|
||||
if (SkuIdTable[1 + i] == Database->Init.SystemSkuId) {
|
||||
return SizeTable[SizeTableIdx + 1 + i];
|
||||
for (Index = 0; Index < SkuIdTable[0]; Index++) {
|
||||
if (SkuIdTable[1 + Index] == Database->Init.SystemSkuId) {
|
||||
return SizeTable[SizeTableIdx + 1 + Index];
|
||||
}
|
||||
}
|
||||
return SizeTable[SizeTableIdx + 1];
|
||||
|
@ -725,8 +1158,20 @@ GetPtrTypeSize (
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
Set PCD value's size for POINTER type PCD.
|
||||
|
||||
The POINTER type PCD's value will be stored into a buffer in specificed size.
|
||||
The max size of this PCD's value is described in PCD's definition in DEC file.
|
||||
|
||||
@param LocalTokenNumberTableIdx Index of PCD token number in PCD token table
|
||||
@param CurrentSize Maxmium size of PCD's value
|
||||
@param Database Pcd database in PEI phase.
|
||||
|
||||
@retval TRUE Success to set PCD's value size, which is not exceed maxmium size
|
||||
@retval FALSE Fail to set PCD's value size, which maybe exceed maxmium size
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
SetPtrTypeSize (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
|
@ -738,7 +1183,7 @@ SetPtrTypeSize (
|
|||
UINTN LocalTokenNumber;
|
||||
SKU_ID *SkuIdTable;
|
||||
SIZE_INFO *SizeTable;
|
||||
UINTN i;
|
||||
UINTN Index;
|
||||
UINTN MaxSize;
|
||||
|
||||
SizeTableIdx = GetSizeTableIndex (LocalTokenNumberTableIdx, Database);
|
||||
|
@ -754,7 +1199,7 @@ SetPtrTypeSize (
|
|||
// SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
|
||||
// PCD entry.
|
||||
//
|
||||
if (LocalTokenNumber & PCD_TYPE_VPD) {
|
||||
if ((LocalTokenNumber & PCD_TYPE_VPD) != 0) {
|
||||
//
|
||||
// We shouldn't come here as we don't support SET for VPD
|
||||
//
|
||||
|
@ -782,9 +1227,9 @@ SetPtrTypeSize (
|
|||
// 2) Current Size for each SKU_ID (It is equal to MaxSku).
|
||||
//
|
||||
SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, Database);
|
||||
for (i = 0; i < SkuIdTable[0]; i++) {
|
||||
if (SkuIdTable[1 + i] == Database->Init.SystemSkuId) {
|
||||
SizeTable[SizeTableIdx + 1 + i] = (SIZE_INFO) *CurrentSize;
|
||||
for (Index = 0; Index < SkuIdTable[0]; Index++) {
|
||||
if (SkuIdTable[1 + Index] == Database->Init.SystemSkuId) {
|
||||
SizeTable[SizeTableIdx + 1 + Index] = (SIZE_INFO) *CurrentSize;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,7 +21,7 @@ Module Name: Service.c
|
|||
The function registers the CallBackOnSet fucntion
|
||||
according to TokenNumber and EFI_GUID space.
|
||||
|
||||
@param TokenNumber The token number.
|
||||
@param ExTokenNumber The token number.
|
||||
@param Guid The GUID space.
|
||||
@param CallBackFunction The Callback function to be registered.
|
||||
@param Register To register or unregister the callback function.
|
||||
|
@ -30,7 +30,7 @@ Module Name: Service.c
|
|||
@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
|
||||
PeiRegisterCallBackWorker (
|
||||
IN UINTN ExTokenNumber,
|
||||
|
@ -103,16 +103,9 @@ PeiRegisterCallBackWorker (
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
The function builds the PCD database.
|
||||
|
||||
@param VOID
|
||||
|
||||
@retval VOID
|
||||
--*/
|
||||
**/
|
||||
VOID
|
||||
BuildPcdDatabase (
|
||||
VOID
|
||||
|
@ -137,12 +130,8 @@ BuildPcdDatabase (
|
|||
CallbackFnTable = BuildGuidHob (&gPcdPeiCallbackFnTableHobGuid, SizeOfCallbackFnTable);
|
||||
|
||||
ZeroMem (CallbackFnTable, SizeOfCallbackFnTable);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
The function is provided by PCD PEIM and PCD DXE driver to
|
||||
do the work of reading a HII variable from variable service.
|
||||
|
@ -154,8 +143,7 @@ BuildPcdDatabase (
|
|||
|
||||
@retval EFI_SUCCESS Operation successful.
|
||||
@retval EFI_NOT_FOUND Variablel not found.
|
||||
--*/
|
||||
STATIC
|
||||
**/
|
||||
EFI_STATUS
|
||||
GetHiiVariable (
|
||||
IN CONST EFI_GUID *VariableGuid,
|
||||
|
@ -201,13 +189,20 @@ GetHiiVariable (
|
|||
*VariableData = Buffer;
|
||||
|
||||
return EFI_SUCCESS;
|
||||
} else {
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
}
|
||||
|
||||
return EFI_NOT_FOUND;
|
||||
}
|
||||
|
||||
STATIC
|
||||
/**
|
||||
Find the local token number according to system SKU ID.
|
||||
|
||||
@param LocalTokenNumber PCD token number
|
||||
@param Size The size of PCD entry.
|
||||
|
||||
@return Token number according to system SKU ID.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
GetSkuEnabledTokenNumber (
|
||||
UINT32 LocalTokenNumber,
|
||||
|
@ -217,7 +212,7 @@ GetSkuEnabledTokenNumber (
|
|||
PEI_PCD_DATABASE *PeiPcdDb;
|
||||
SKU_HEAD *SkuHead;
|
||||
SKU_ID *SkuIdTable;
|
||||
INTN i;
|
||||
INTN Index;
|
||||
UINT8 *Value;
|
||||
|
||||
PeiPcdDb = GetPcdDatabase ();
|
||||
|
@ -228,27 +223,27 @@ GetSkuEnabledTokenNumber (
|
|||
Value = (UINT8 *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuDataStartOffset));
|
||||
SkuIdTable = (SKU_ID *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuIdTableOffset));
|
||||
|
||||
for (i = 0; i < SkuIdTable[0]; i++) {
|
||||
if (PeiPcdDb->Init.SystemSkuId == SkuIdTable[i + 1]) {
|
||||
for (Index = 0; Index < SkuIdTable[0]; Index++) {
|
||||
if (PeiPcdDb->Init.SystemSkuId == SkuIdTable[Index + 1]) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {
|
||||
case PCD_TYPE_VPD:
|
||||
Value = (UINT8 *) &(((VPD_HEAD *) Value)[i]);
|
||||
Value = (UINT8 *) &(((VPD_HEAD *) Value)[Index]);
|
||||
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_VPD);
|
||||
|
||||
case PCD_TYPE_HII:
|
||||
Value = (UINT8 *) &(((VARIABLE_HEAD *) Value)[i]);
|
||||
Value = (UINT8 *) &(((VARIABLE_HEAD *) Value)[Index]);
|
||||
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_HII);
|
||||
|
||||
case PCD_TYPE_STRING:
|
||||
Value = (UINT8 *) &(((STRING_HEAD *) Value)[i]);
|
||||
Value = (UINT8 *) &(((STRING_HEAD *) Value)[Index]);
|
||||
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_STRING);
|
||||
|
||||
case PCD_TYPE_DATA:
|
||||
Value += Size * i;
|
||||
Value += Size * Index;
|
||||
return (UINT32) (Value - (UINT8 *) PeiPcdDb);
|
||||
|
||||
default:
|
||||
|
@ -258,12 +253,21 @@ GetSkuEnabledTokenNumber (
|
|||
ASSERT (FALSE);
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
Invoke the callback function when dynamic PCD entry was set, if this PCD entry
|
||||
has registered callback function.
|
||||
|
||||
@param ExTokenNumber DynamicEx PCD's token number, if this PCD entry is dyanmicEx
|
||||
type PCD.
|
||||
@param Guid DynamicEx PCD's guid, if this PCD entry is dynamicEx type
|
||||
PCD.
|
||||
@param TokenNumber PCD token number generated by build tools.
|
||||
@param Data Value want to be set for this PCD entry
|
||||
@param Size The size of value
|
||||
|
||||
STATIC
|
||||
**/
|
||||
VOID
|
||||
InvokeCallbackOnSet (
|
||||
UINTN ExTokenNumber,
|
||||
|
@ -307,11 +311,18 @@ InvokeCallbackOnSet (
|
|||
);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
Wrapper function for setting non-pointer type value for a PCD entry.
|
||||
|
||||
@param TokenNumber Pcd token number autogenerated by build tools.
|
||||
@param Data Value want to be set for PCD entry
|
||||
@param Size Size of value.
|
||||
|
||||
@return status of SetWorker.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
SetValueWorker (
|
||||
IN UINTN TokenNumber,
|
||||
|
@ -322,12 +333,25 @@ SetValueWorker (
|
|||
return SetWorker (TokenNumber, Data, &Size, FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
Set value for an PCD entry
|
||||
|
||||
@param TokenNumber Pcd token number autogenerated by build tools.
|
||||
@param Data Value want to be set for PCD entry
|
||||
@param Size Size of value.
|
||||
@param PtrType If TRUE, the type of PCD entry's value is Pointer.
|
||||
If False, the type of PCD entry's value is not Pointer.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If this PCD type is VPD, VPD PCD can not be set.
|
||||
@retval EFI_INVALID_PARAMETER If Size can not be set to size table.
|
||||
@retval EFI_NOT_FOUND If value type of PCD entry is intergrate, but not in
|
||||
range of UINT8, UINT16, UINT32, UINT64
|
||||
@retval EFI_NOT_FOUND Can not find the PCD type according to token number.
|
||||
**/
|
||||
EFI_STATUS
|
||||
SetWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN OUT VOID *Data,
|
||||
IN VOID *Data,
|
||||
IN OUT UINTN *Size,
|
||||
IN BOOLEAN PtrType
|
||||
)
|
||||
|
@ -442,8 +466,17 @@ SetWorker (
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
Wrapper function for set PCD value for non-Pointer type dynamic-ex PCD.
|
||||
|
||||
@param ExTokenNumber Token number for dynamic-ex PCD.
|
||||
@param Guid Token space guid for dynamic-ex PCD.
|
||||
@param Data Value want to be set.
|
||||
@param SetSize The size of value.
|
||||
|
||||
@return status of ExSetWorker().
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
ExSetValueWorker (
|
||||
IN UINTN ExTokenNumber,
|
||||
|
@ -455,8 +488,24 @@ ExSetValueWorker (
|
|||
return ExSetWorker (ExTokenNumber, Guid, Data, &Size, FALSE);
|
||||
}
|
||||
|
||||
/**
|
||||
Set value for a dynamic PCD entry.
|
||||
|
||||
This routine find the local token number according to dynamic-ex PCD's token
|
||||
space guid and token number firstly, and invoke callback function if this PCD
|
||||
entry registered callback function. Finally, invoken general SetWorker to set
|
||||
PCD value.
|
||||
|
||||
@param ExTokenNumber Dynamic-ex PCD token number.
|
||||
@param Guid Token space guid for dynamic-ex PCD.
|
||||
@param Data PCD value want to be set
|
||||
@param SetSize Size of value.
|
||||
@param PtrType If TRUE, this PCD entry is pointer type.
|
||||
If FALSE, this PCD entry is not pointer type.
|
||||
|
||||
@return status of SetWorker().
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
ExSetWorker (
|
||||
IN UINTN ExTokenNumber,
|
||||
|
@ -480,9 +529,16 @@ ExSetWorker (
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
Wrapper function for get PCD value for dynamic-ex PCD.
|
||||
|
||||
@param Guid Token space guid for dynamic-ex PCD.
|
||||
@param ExTokenNumber Token number for dyanmic-ex PCD.
|
||||
@param GetSize The size of dynamic-ex PCD value.
|
||||
|
||||
@return PCD entry in PCD database.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
ExGetWorker (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
|
@ -498,13 +554,24 @@ ExGetWorker (
|
|||
return GetWorker (GetExPcdTokenNumber (Guid, ExTokenNumber), GetSize);
|
||||
}
|
||||
|
||||
/**
|
||||
Get the PCD entry pointer in PCD database.
|
||||
|
||||
This routine will visit PCD database to find the PCD entry according to given
|
||||
token number. The given token number is autogened by build tools and it will be
|
||||
translated to local token number. Local token number contains PCD's type and
|
||||
offset of PCD entry in PCD database.
|
||||
|
||||
@param TokenNumber Token's number, it is autogened by build tools
|
||||
@param GetSize The size of token's value
|
||||
|
||||
@return PCD entry pointer in PCD database
|
||||
|
||||
**/
|
||||
VOID *
|
||||
GetWorker (
|
||||
UINTN TokenNumber,
|
||||
UINTN GetSize
|
||||
IN UINTN TokenNumber,
|
||||
IN UINTN GetSize
|
||||
)
|
||||
{
|
||||
UINT32 Offset;
|
||||
|
@ -596,15 +663,26 @@ GetWorker (
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
Get local token number according to dynamic-ex PCD's {token space guid:token number}
|
||||
|
||||
A dynamic-ex type PCD, developer must provide pair of token space guid: token number
|
||||
in DEC file. PCD database maintain a mapping table that translate pair of {token
|
||||
space guid: token number} to local token number.
|
||||
|
||||
@param Guid Token space guid for dynamic-ex PCD entry.
|
||||
@param ExTokenNumber EDES_TODO: Add parameter description
|
||||
|
||||
@return local token number for dynamic-ex PCD.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
GetExPcdTokenNumber (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
IN UINTN ExTokenNumber
|
||||
)
|
||||
{
|
||||
UINT32 i;
|
||||
UINT32 Index;
|
||||
DYNAMICEX_MAPPING *ExMap;
|
||||
EFI_GUID *GuidTable;
|
||||
EFI_GUID *MatchGuid;
|
||||
|
@ -625,10 +703,10 @@ GetExPcdTokenNumber (
|
|||
|
||||
MatchGuidIdx = MatchGuid - GuidTable;
|
||||
|
||||
for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
||||
if ((ExTokenNumber == ExMap[i].ExTokenNumber) &&
|
||||
(MatchGuidIdx == ExMap[i].ExGuidIndex)) {
|
||||
return ExMap[i].LocalTokenNumber;
|
||||
for (Index = 0; Index < PEI_EXMAPPING_TABLE_SIZE; Index++) {
|
||||
if ((ExTokenNumber == ExMap[Index].ExTokenNumber) &&
|
||||
(MatchGuidIdx == ExMap[Index].ExGuidIndex)) {
|
||||
return ExMap[Index].LocalTokenNumber;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -637,8 +715,12 @@ GetExPcdTokenNumber (
|
|||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
Get PCD database from GUID HOB in PEI phase.
|
||||
|
||||
@return Pointer to PCD database.
|
||||
|
||||
**/
|
||||
PEI_PCD_DATABASE *
|
||||
GetPcdDatabase (
|
||||
VOID
|
||||
|
@ -652,8 +734,15 @@ GetPcdDatabase (
|
|||
return (PEI_PCD_DATABASE *) GET_GUID_HOB_DATA (GuidHob);
|
||||
}
|
||||
|
||||
/**
|
||||
Get SKU ID tabble from PCD database.
|
||||
|
||||
@param LocalTokenNumberTableIdx Index of local token number in token number table.
|
||||
@param Database PCD database.
|
||||
|
||||
@return Pointer to SKU ID array table
|
||||
|
||||
**/
|
||||
SKU_ID *
|
||||
GetSkuIdArray (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
|
@ -673,30 +762,37 @@ GetSkuIdArray (
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
Get index of PCD entry in size table.
|
||||
|
||||
@param LocalTokenNumberTableIdx Index of this PCD in local token number table.
|
||||
@param Database Pointer to PCD database in PEI phase.
|
||||
|
||||
@return index of PCD entry in size table.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
GetSizeTableIndex (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
IN PEI_PCD_DATABASE *Database
|
||||
)
|
||||
{
|
||||
UINTN i;
|
||||
UINTN Index;
|
||||
UINTN SizeTableIdx;
|
||||
UINTN LocalTokenNumber;
|
||||
SKU_ID *SkuIdTable;
|
||||
|
||||
SizeTableIdx = 0;
|
||||
|
||||
for (i=0; i<LocalTokenNumberTableIdx; i++) {
|
||||
LocalTokenNumber = Database->Init.LocalTokenNumberTable[i];
|
||||
for (Index=0; Index<LocalTokenNumberTableIdx; Index++) {
|
||||
LocalTokenNumber = Database->Init.LocalTokenNumberTable[Index];
|
||||
|
||||
if ((LocalTokenNumber & PCD_DATUM_TYPE_ALL_SET) == PCD_DATUM_TYPE_POINTER) {
|
||||
//
|
||||
// SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
|
||||
// PCD entry.
|
||||
//
|
||||
if (LocalTokenNumber & PCD_TYPE_VPD) {
|
||||
if ((LocalTokenNumber & PCD_TYPE_VPD) != 0) {
|
||||
//
|
||||
// We have only one entry for VPD enabled PCD entry:
|
||||
// 1) MAX Size.
|
||||
|
@ -717,7 +813,7 @@ GetSizeTableIndex (
|
|||
// 1) MAX SIZE
|
||||
// 2) Current Size for each SKU_ID (It is equal to MaxSku).
|
||||
//
|
||||
SkuIdTable = GetSkuIdArray (i, Database);
|
||||
SkuIdTable = GetSkuIdArray (Index, Database);
|
||||
SizeTableIdx += (UINTN)*SkuIdTable + 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,8 +15,8 @@ Module Name: Service.h
|
|||
|
||||
**/
|
||||
|
||||
#ifndef _SERVICE_H
|
||||
#define _SERVICE_H
|
||||
#ifndef _PEI_PCD_SERVICE_H_
|
||||
#define _PEI_PCD_SERVICE_H_
|
||||
|
||||
#include <PiPei.h>
|
||||
#include <Ppi/ReadOnlyVariable2.h>
|
||||
|
@ -48,6 +48,30 @@ Module Name: Service.h
|
|||
//
|
||||
// PPI Interface Implementation Declaration.
|
||||
//
|
||||
|
||||
/**
|
||||
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[in] SkuId The SKU value that will be used when the PCD service will retrieve and
|
||||
set values associated with a PCD token.
|
||||
|
||||
@retval VOID
|
||||
|
||||
**/
|
||||
VOID
|
||||
EFIAPI
|
||||
PeiPcdSetSku (
|
||||
|
@ -55,7 +79,17 @@ PeiPcdSetSku (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The UINT8 value.
|
||||
|
||||
**/
|
||||
UINT8
|
||||
EFIAPI
|
||||
PeiPcdGet8 (
|
||||
|
@ -63,7 +97,17 @@ PeiPcdGet8 (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The UINT16 value.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
PeiPcdGet16 (
|
||||
|
@ -71,7 +115,17 @@ PeiPcdGet16 (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The UINT32 value.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
PeiPcdGet32 (
|
||||
|
@ -79,7 +133,17 @@ PeiPcdGet32 (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The UINT64 value.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
PeiPcdGet64 (
|
||||
|
@ -87,7 +151,19 @@ PeiPcdGet64 (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The pointer to the buffer to be retrived.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
PeiPcdGetPtr (
|
||||
|
@ -95,7 +171,19 @@ PeiPcdGetPtr (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The Boolean value.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
PeiPcdGetBool (
|
||||
|
@ -103,7 +191,17 @@ PeiPcdGetBool (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The size of the value for the PCD token.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
PeiPcdGetSize (
|
||||
|
@ -111,7 +209,20 @@ PeiPcdGetSize (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The size 8-bit value for the PCD token.
|
||||
|
||||
**/
|
||||
UINT8
|
||||
EFIAPI
|
||||
PeiPcdGet8Ex (
|
||||
|
@ -120,7 +231,20 @@ PeiPcdGet8Ex (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The size 16-bit value for the PCD token.
|
||||
|
||||
**/
|
||||
UINT16
|
||||
EFIAPI
|
||||
PeiPcdGet16Ex (
|
||||
|
@ -129,6 +253,20 @@ PeiPcdGet16Ex (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The size 32-bit value for the PCD token.
|
||||
|
||||
**/
|
||||
UINT32
|
||||
EFIAPI
|
||||
PeiPcdGet32Ex (
|
||||
|
@ -137,7 +275,20 @@ PeiPcdGet32Ex (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The size 64-bit value for the PCD token.
|
||||
|
||||
**/
|
||||
UINT64
|
||||
EFIAPI
|
||||
PeiPcdGet64Ex (
|
||||
|
@ -146,7 +297,20 @@ PeiPcdGet64Ex (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The pointer to the buffer to be retrived.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
EFIAPI
|
||||
PeiPcdGetPtrEx (
|
||||
|
@ -155,7 +319,20 @@ PeiPcdGetPtrEx (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The size Boolean value for the PCD token.
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
EFIAPI
|
||||
PeiPcdGetBoolEx (
|
||||
|
@ -164,7 +341,18 @@ PeiPcdGetBoolEx (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The token space for the token number.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
|
||||
@return The size of the value for the PCD token.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
EFIAPI
|
||||
PeiPcdGetSizeEx (
|
||||
|
@ -173,7 +361,23 @@ PeiPcdGetSizeEx (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet8 (
|
||||
|
@ -182,7 +386,23 @@ PeiPcdSet8 (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet16 (
|
||||
|
@ -191,7 +411,23 @@ PeiPcdSet16 (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet32 (
|
||||
|
@ -200,7 +436,23 @@ PeiPcdSet32 (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet64 (
|
||||
|
@ -209,6 +461,27 @@ PeiPcdSet64 (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
@param[in, out] 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[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSetPtr (
|
||||
|
@ -218,7 +491,23 @@ PeiPcdSetPtr (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSetBool (
|
||||
|
@ -227,7 +516,24 @@ PeiPcdSetBool (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet8Ex (
|
||||
|
@ -237,6 +543,24 @@ PeiPcdSet8Ex (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet16Ex (
|
||||
|
@ -246,7 +570,24 @@ PeiPcdSet16Ex (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet32Ex (
|
||||
|
@ -256,7 +597,24 @@ PeiPcdSet32Ex (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSet64Ex (
|
||||
|
@ -266,7 +624,28 @@ PeiPcdSet64Ex (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[in, out] 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[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSetPtrEx (
|
||||
|
@ -277,7 +656,24 @@ PeiPcdSetPtrEx (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdSetBoolEx (
|
||||
|
@ -287,8 +683,18 @@ PeiPcdSetBoolEx (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Specifies a function to be called anytime the value of a designated token is changed.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in] TokenNumber The PCD token number.
|
||||
@param[in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiRegisterCallBackOnSet (
|
||||
|
@ -298,7 +704,18 @@ PeiRegisterCallBackOnSet (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Cancels a previously set callback function for a particular PCD token number.
|
||||
|
||||
@param [in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param [in] TokenNumber The PCD token number.
|
||||
@param [in] 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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PcdUnRegisterCallBackOnSet (
|
||||
|
@ -308,7 +725,24 @@ PcdUnRegisterCallBackOnSet (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Retrieves the next valid PCD token for a given namespace.
|
||||
|
||||
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
|
||||
@param[in, out] TokenNumber A pointer to the PCD token number to use to find the subsequent token number.
|
||||
If the input token namespace or token number does not exist on the platform,
|
||||
an error is returned and the value of *TokenNumber is undefined. To retrieve the "first" token,
|
||||
have the pointer reference a TokenNumber value of 0. If the input token number is 0 and
|
||||
there is no valid token number for this token namespace, *TokenNumber will be assigned to
|
||||
0 and the function return EFI_SUCCESS. If the token number is the last valid token number,
|
||||
*TokenNumber will be assigned to 0 and the function return EFI_SUCCESS.
|
||||
|
||||
@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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdGetNextToken (
|
||||
|
@ -317,24 +751,58 @@ PeiPcdGetNextToken (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
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) 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.
|
||||
|
||||
@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.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
PeiPcdGetNextTokenSpace (
|
||||
IN CONST EFI_GUID **Guid
|
||||
IN OUT CONST EFI_GUID **Guid
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
/* Internal Function definitions */
|
||||
/**
|
||||
Get PCD database from GUID HOB in PEI phase.
|
||||
|
||||
@return Pointer to PCD database.
|
||||
|
||||
**/
|
||||
PEI_PCD_DATABASE *
|
||||
GetPcdDatabase (
|
||||
VOID
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Wrapper function for setting non-pointer type value for a PCD entry.
|
||||
|
||||
@param TokenNumber Pcd token number autogenerated by build tools.
|
||||
@param Data Value want to be set for PCD entry
|
||||
@param Size Size of value.
|
||||
|
||||
@return status of SetWorker.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
SetValueWorker (
|
||||
IN UINTN TokenNumber,
|
||||
|
@ -343,7 +811,21 @@ SetValueWorker (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Set value for an PCD entry
|
||||
|
||||
@param TokenNumber Pcd token number autogenerated by build tools.
|
||||
@param Data Value want to be set for PCD entry
|
||||
@param Size Size of value.
|
||||
@param PtrType If TRUE, the type of PCD entry's value is Pointer.
|
||||
If False, the type of PCD entry's value is not Pointer.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If this PCD type is VPD, VPD PCD can not be set.
|
||||
@retval EFI_INVALID_PARAMETER If Size can not be set to size table.
|
||||
@retval EFI_NOT_FOUND If value type of PCD entry is intergrate, but not in
|
||||
range of UINT8, UINT16, UINT32, UINT64
|
||||
@retval EFI_NOT_FOUND Can not find the PCD type according to token number.
|
||||
**/
|
||||
EFI_STATUS
|
||||
SetWorker (
|
||||
IN UINTN TokenNumber,
|
||||
|
@ -353,7 +835,17 @@ SetWorker (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Wrapper function for set PCD value for non-Pointer type dynamic-ex PCD.
|
||||
|
||||
@param ExTokenNumber Token number for dynamic-ex PCD.
|
||||
@param Guid Token space guid for dynamic-ex PCD.
|
||||
@param Data Value want to be set.
|
||||
@param SetSize The size of value.
|
||||
|
||||
@return status of ExSetWorker().
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
ExSetValueWorker (
|
||||
IN UINTN ExTokenNumber,
|
||||
|
@ -363,8 +855,24 @@ ExSetValueWorker (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Set value for a dynamic PCD entry.
|
||||
|
||||
This routine find the local token number according to dynamic-ex PCD's token
|
||||
space guid and token number firstly, and invoke callback function if this PCD
|
||||
entry registered callback function. Finally, invoken general SetWorker to set
|
||||
PCD value.
|
||||
|
||||
@param ExTokenNumber Dynamic-ex PCD token number.
|
||||
@param Guid Token space guid for dynamic-ex PCD.
|
||||
@param Data PCD value want to be set
|
||||
@param SetSize Size of value.
|
||||
@param PtrType If TRUE, this PCD entry is pointer type.
|
||||
If FALSE, this PCD entry is not pointer type.
|
||||
|
||||
@return status of SetWorker().
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
ExSetWorker (
|
||||
IN UINTN ExTokenNumber,
|
||||
|
@ -375,8 +883,20 @@ ExSetWorker (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Get the PCD entry pointer in PCD database.
|
||||
|
||||
This routine will visit PCD database to find the PCD entry according to given
|
||||
token number. The given token number is autogened by build tools and it will be
|
||||
translated to local token number. Local token number contains PCD's type and
|
||||
offset of PCD entry in PCD database.
|
||||
|
||||
@param TokenNumber Token's number, it is autogened by build tools
|
||||
@param GetSize The size of token's value
|
||||
|
||||
@return PCD entry pointer in PCD database
|
||||
|
||||
**/
|
||||
VOID *
|
||||
GetWorker (
|
||||
IN UINTN TokenNumber,
|
||||
|
@ -384,8 +904,16 @@ GetWorker (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Wrapper function for get PCD value for dynamic-ex PCD.
|
||||
|
||||
@param Guid Token space guid for dynamic-ex PCD.
|
||||
@param ExTokenNumber Token number for dyanmic-ex PCD.
|
||||
@param GetSize The size of dynamic-ex PCD value.
|
||||
|
||||
@return PCD entry in PCD database.
|
||||
|
||||
**/
|
||||
VOID *
|
||||
ExGetWorker (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
|
@ -400,7 +928,19 @@ typedef struct {
|
|||
UINT32 LocalTokenNumberAlias;
|
||||
} EX_PCD_ENTRY_ATTRIBUTE;
|
||||
|
||||
/**
|
||||
Get local token number according to dynamic-ex PCD's {token space guid:token number}
|
||||
|
||||
A dynamic-ex type PCD, developer must provide pair of token space guid: token number
|
||||
in DEC file. PCD database maintain a mapping table that translate pair of {token
|
||||
space guid: token number} to local token number.
|
||||
|
||||
@param Guid Token space guid for dynamic-ex PCD entry.
|
||||
@param ExTokenNumber EDES_TODO: Add parameter description
|
||||
|
||||
@return local token number for dynamic-ex PCD.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
GetExPcdTokenNumber (
|
||||
IN CONST EFI_GUID *Guid,
|
||||
|
@ -408,26 +948,46 @@ GetExPcdTokenNumber (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
The function registers the CallBackOnSet fucntion
|
||||
according to TokenNumber and EFI_GUID space.
|
||||
|
||||
@param TokenNumber The token number.
|
||||
@param Guid The GUID space.
|
||||
@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_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
|
||||
PeiRegisterCallBackWorker (
|
||||
IN UINTN TokenNumber,
|
||||
IN CONST GUID *Guid, OPTIONAL
|
||||
IN CONST EFI_GUID *Guid, OPTIONAL
|
||||
IN PCD_PPI_CALLBACK CallBackFunction,
|
||||
IN BOOLEAN Register
|
||||
);
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
The function builds the PCD database.
|
||||
**/
|
||||
VOID
|
||||
BuildPcdDatabase (
|
||||
VOID
|
||||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Get SKU ID tabble from PCD database.
|
||||
|
||||
@param LocalTokenNumberTableIdx Index of local token number in token number table.
|
||||
@param Database PCD Database in PEI phase
|
||||
|
||||
@return Pointer to SKU ID array table
|
||||
|
||||
**/
|
||||
SKU_ID *
|
||||
GetSkuIdArray (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
|
@ -435,6 +995,15 @@ GetSkuIdArray (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Get index of PCD entry in size table.
|
||||
|
||||
@param LocalTokenNumberTableIdx Index of this PCD in local token number table.
|
||||
@param Database Pointer to PCD database.
|
||||
|
||||
@return index of PCD entry in size table.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
GetSizeTableIndex (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
|
@ -442,6 +1011,19 @@ GetSizeTableIndex (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Get PCD value's size for POINTER type PCD.
|
||||
|
||||
The POINTER type PCD's value will be stored into a buffer in specificed size.
|
||||
The max size of this PCD's value is described in PCD's definition in DEC file.
|
||||
|
||||
@param LocalTokenNumberTableIdx Index of PCD token number in PCD token table
|
||||
@param MaxSize Maxmium size of PCD's value
|
||||
@param Database Pcd database in PEI phase.
|
||||
|
||||
@return PCD value's size for POINTER type PCD.
|
||||
|
||||
**/
|
||||
UINTN
|
||||
GetPtrTypeSize (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
|
@ -450,8 +1032,20 @@ GetPtrTypeSize (
|
|||
)
|
||||
;
|
||||
|
||||
/**
|
||||
Set PCD value's size for POINTER type PCD.
|
||||
|
||||
The POINTER type PCD's value will be stored into a buffer in specificed size.
|
||||
The max size of this PCD's value is described in PCD's definition in DEC file.
|
||||
|
||||
@param LocalTokenNumberTableIdx Index of PCD token number in PCD token table
|
||||
@param CurrentSize Maxmium size of PCD's value
|
||||
@param Database Pcd database in PEI phase.
|
||||
|
||||
@retval TRUE Success to set PCD's value size, which is not exceed maxmium size
|
||||
@retval FALSE Fail to set PCD's value size, which maybe exceed maxmium size
|
||||
|
||||
**/
|
||||
BOOLEAN
|
||||
SetPtrTypeSize (
|
||||
IN UINTN LocalTokenNumberTableIdx,
|
||||
|
|
Loading…
Reference in New Issue