mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-20 20:24:28 +02:00
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,4 +1,6 @@
|
|||||||
/** @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
|
Copyright (c) 2006, Intel Corporation
|
||||||
All rights reserved. This program and the accompanying materials
|
All rights reserved. This program and the accompanying materials
|
||||||
@ -9,14 +11,10 @@ http://opensource.org/licenses/bsd-license.php
|
|||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
|
|
||||||
Module Name: Pcd.c
|
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#include "Service.h"
|
#include "Service.h"
|
||||||
|
|
||||||
|
|
||||||
PCD_PPI mPcdPpiInstance = {
|
PCD_PPI mPcdPpiInstance = {
|
||||||
PeiPcdSetSku,
|
PeiPcdSetSku,
|
||||||
|
|
||||||
@ -56,16 +54,23 @@ PCD_PPI mPcdPpiInstance = {
|
|||||||
PeiPcdGetNextTokenSpace
|
PeiPcdGetNextTokenSpace
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
STATIC EFI_PEI_PPI_DESCRIPTOR mPpiPCD = {
|
STATIC EFI_PEI_PPI_DESCRIPTOR mPpiPCD = {
|
||||||
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
|
(EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),
|
||||||
&gPcdPpiGuid,
|
&gPcdPpiGuid,
|
||||||
&mPcdPpiInstance
|
&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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PcdPeimInit (
|
PcdPeimInit (
|
||||||
@ -73,17 +78,34 @@ PcdPeimInit (
|
|||||||
IN EFI_PEI_SERVICES **PeiServices
|
IN EFI_PEI_SERVICES **PeiServices
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
EFI_STATUS Status;
|
|
||||||
|
|
||||||
BuildPcdDatabase ();
|
BuildPcdDatabase ();
|
||||||
|
|
||||||
Status = PeiServicesInstallPpi (&mPpiPCD);
|
return PeiServicesInstallPpi (&mPpiPCD);
|
||||||
|
|
||||||
ASSERT_EFI_ERROR (Status);
|
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
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
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetSku (
|
PeiPcdSetSku (
|
||||||
@ -96,8 +118,17 @@ PeiPcdSetSku (
|
|||||||
return;
|
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
|
UINT8
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet8 (
|
PeiPcdGet8 (
|
||||||
@ -107,8 +138,17 @@ PeiPcdGet8 (
|
|||||||
return *((UINT8 *) GetWorker (TokenNumber, sizeof (UINT8)));
|
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
|
UINT16
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet16 (
|
PeiPcdGet16 (
|
||||||
@ -118,8 +158,17 @@ PeiPcdGet16 (
|
|||||||
return ReadUnaligned16 (GetWorker (TokenNumber, sizeof (UINT16)));
|
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
|
UINT32
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet32 (
|
PeiPcdGet32 (
|
||||||
@ -129,8 +178,17 @@ PeiPcdGet32 (
|
|||||||
return ReadUnaligned32 (GetWorker (TokenNumber, sizeof (UINT32)));
|
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
|
UINT64
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet64 (
|
PeiPcdGet64 (
|
||||||
@ -140,8 +198,19 @@ PeiPcdGet64 (
|
|||||||
return ReadUnaligned64 (GetWorker (TokenNumber, sizeof (UINT64)));
|
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 *
|
VOID *
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetPtr (
|
PeiPcdGetPtr (
|
||||||
@ -151,8 +220,19 @@ PeiPcdGetPtr (
|
|||||||
return GetWorker (TokenNumber, 0);
|
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
|
BOOLEAN
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetBool (
|
PeiPcdGetBool (
|
||||||
@ -162,8 +242,17 @@ PeiPcdGetBool (
|
|||||||
return *((BOOLEAN *) GetWorker (TokenNumber, sizeof (BOOLEAN)));
|
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
|
UINTN
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetSize (
|
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
|
UINT8
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet8Ex (
|
PeiPcdGet8Ex (
|
||||||
@ -221,8 +322,20 @@ PeiPcdGet8Ex (
|
|||||||
return *((UINT8 *) ExGetWorker (Guid, ExTokenNumber, sizeof (UINT8)));
|
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
|
UINT16
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet16Ex (
|
PeiPcdGet16Ex (
|
||||||
@ -233,8 +346,20 @@ PeiPcdGet16Ex (
|
|||||||
return ReadUnaligned16 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT16)));
|
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
|
UINT32
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet32Ex (
|
PeiPcdGet32Ex (
|
||||||
@ -245,8 +370,20 @@ PeiPcdGet32Ex (
|
|||||||
return ReadUnaligned32 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT32)));
|
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
|
UINT64
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet64Ex (
|
PeiPcdGet64Ex (
|
||||||
@ -257,8 +394,20 @@ PeiPcdGet64Ex (
|
|||||||
return ReadUnaligned64 (ExGetWorker (Guid, ExTokenNumber, sizeof (UINT64)));
|
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 *
|
VOID *
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetPtrEx (
|
PeiPcdGetPtrEx (
|
||||||
@ -269,8 +418,20 @@ PeiPcdGetPtrEx (
|
|||||||
return ExGetWorker (Guid, ExTokenNumber, 0);
|
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
|
BOOLEAN
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetBoolEx (
|
PeiPcdGetBoolEx (
|
||||||
@ -281,8 +442,18 @@ PeiPcdGetBoolEx (
|
|||||||
return *((BOOLEAN *) ExGetWorker (Guid, ExTokenNumber, sizeof (BOOLEAN)));
|
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
|
UINTN
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetSizeEx (
|
PeiPcdGetSizeEx (
|
||||||
@ -297,8 +468,23 @@ PeiPcdGetSizeEx (
|
|||||||
return PeiPcdGetSize (GetExPcdTokenNumber (Guid, ExTokenNumber));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet8 (
|
PeiPcdSet8 (
|
||||||
@ -309,8 +495,23 @@ PeiPcdSet8 (
|
|||||||
return SetValueWorker (TokenNumber, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet16 (
|
PeiPcdSet16 (
|
||||||
@ -321,8 +522,23 @@ PeiPcdSet16 (
|
|||||||
return SetValueWorker (TokenNumber, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet32 (
|
PeiPcdSet32 (
|
||||||
@ -333,8 +549,23 @@ PeiPcdSet32 (
|
|||||||
return SetValueWorker (TokenNumber, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet64 (
|
PeiPcdSet64 (
|
||||||
@ -345,7 +576,27 @@ PeiPcdSet64 (
|
|||||||
return SetValueWorker (TokenNumber, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetPtr (
|
PeiPcdSetPtr (
|
||||||
@ -357,8 +608,23 @@ PeiPcdSetPtr (
|
|||||||
return SetWorker (TokenNumber, Buffer, SizeOfBuffer, TRUE);
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetBool (
|
PeiPcdSetBool (
|
||||||
@ -369,8 +635,24 @@ PeiPcdSetBool (
|
|||||||
return SetValueWorker (TokenNumber, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet8Ex (
|
PeiPcdSet8Ex (
|
||||||
@ -382,8 +664,24 @@ PeiPcdSet8Ex (
|
|||||||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet16Ex (
|
PeiPcdSet16Ex (
|
||||||
@ -395,8 +693,24 @@ PeiPcdSet16Ex (
|
|||||||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet32Ex (
|
PeiPcdSet32Ex (
|
||||||
@ -408,8 +722,24 @@ PeiPcdSet32Ex (
|
|||||||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet64Ex (
|
PeiPcdSet64Ex (
|
||||||
@ -421,22 +751,58 @@ PeiPcdSet64Ex (
|
|||||||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetPtrEx (
|
PeiPcdSetPtrEx (
|
||||||
IN CONST EFI_GUID *Guid,
|
IN CONST EFI_GUID *Guid,
|
||||||
IN UINTN ExTokenNumber,
|
IN UINTN ExTokenNumber,
|
||||||
IN UINTN *SizeOfBuffer,
|
IN OUT UINTN *SizeOfBuffer,
|
||||||
IN VOID *Value
|
IN VOID *Value
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
return ExSetWorker (ExTokenNumber, Guid, Value, SizeOfBuffer, TRUE);
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetBoolEx (
|
PeiPcdSetBoolEx (
|
||||||
@ -448,9 +814,18 @@ PeiPcdSetBoolEx (
|
|||||||
return ExSetValueWorker (ExTokenNumber, Guid, &Value, sizeof (Value));
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiRegisterCallBackOnSet (
|
PeiRegisterCallBackOnSet (
|
||||||
@ -468,8 +843,18 @@ PeiRegisterCallBackOnSet (
|
|||||||
return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, TRUE);
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PcdUnRegisterCallBackOnSet (
|
PcdUnRegisterCallBackOnSet (
|
||||||
@ -487,8 +872,24 @@ PcdUnRegisterCallBackOnSet (
|
|||||||
return PeiRegisterCallBackWorker (ExTokenNumber, Guid, CallBackFunction, FALSE);
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetNextToken (
|
PeiPcdGetNextToken (
|
||||||
@ -500,7 +901,7 @@ PeiPcdGetNextToken (
|
|||||||
PEI_PCD_DATABASE *PeiPcdDb;
|
PEI_PCD_DATABASE *PeiPcdDb;
|
||||||
EFI_GUID *MatchGuid;
|
EFI_GUID *MatchGuid;
|
||||||
DYNAMICEX_MAPPING *ExMapTable;
|
DYNAMICEX_MAPPING *ExMapTable;
|
||||||
UINTN i;
|
UINTN Index;
|
||||||
BOOLEAN Found;
|
BOOLEAN Found;
|
||||||
BOOLEAN PeiExMapTableEmpty;
|
BOOLEAN PeiExMapTableEmpty;
|
||||||
|
|
||||||
@ -547,8 +948,8 @@ PeiPcdGetNextToken (
|
|||||||
//
|
//
|
||||||
// Locate the GUID in ExMapTable first.
|
// Locate the GUID in ExMapTable first.
|
||||||
//
|
//
|
||||||
for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
for (Index = 0; Index < PEI_EXMAPPING_TABLE_SIZE; Index++) {
|
||||||
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
|
if (ExMapTable[Index].ExGuidIndex == GuidTableIdx) {
|
||||||
Found = TRUE;
|
Found = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -556,22 +957,22 @@ PeiPcdGetNextToken (
|
|||||||
|
|
||||||
if (Found) {
|
if (Found) {
|
||||||
if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {
|
if (*TokenNumber == PCD_INVALID_TOKEN_NUMBER) {
|
||||||
*TokenNumber = ExMapTable[i].ExTokenNumber;
|
*TokenNumber = ExMapTable[Index].ExTokenNumber;
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
for ( ; Index < PEI_EXMAPPING_TABLE_SIZE; Index++) {
|
||||||
if (ExMapTable[i].ExTokenNumber == *TokenNumber) {
|
if (ExMapTable[Index].ExTokenNumber == *TokenNumber) {
|
||||||
i++;
|
Index++;
|
||||||
if (i == PEI_EXMAPPING_TABLE_SIZE) {
|
if (Index == PEI_EXMAPPING_TABLE_SIZE) {
|
||||||
//
|
//
|
||||||
// Exceed the length of ExMap Table
|
// Exceed the length of ExMap Table
|
||||||
//
|
//
|
||||||
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
}
|
}
|
||||||
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
|
if (ExMapTable[Index].ExGuidIndex == GuidTableIdx) {
|
||||||
*TokenNumber = ExMapTable[i].ExTokenNumber;
|
*TokenNumber = ExMapTable[Index].ExTokenNumber;
|
||||||
return EFI_SUCCESS;
|
return EFI_SUCCESS;
|
||||||
} else {
|
} else {
|
||||||
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
*TokenNumber = PCD_INVALID_TOKEN_NUMBER;
|
||||||
@ -586,8 +987,27 @@ PeiPcdGetNextToken (
|
|||||||
return EFI_NOT_FOUND;
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetNextTokenSpace (
|
PeiPcdGetNextTokenSpace (
|
||||||
@ -598,7 +1018,7 @@ PeiPcdGetNextTokenSpace (
|
|||||||
EFI_GUID *MatchGuid;
|
EFI_GUID *MatchGuid;
|
||||||
PEI_PCD_DATABASE *PeiPcdDb;
|
PEI_PCD_DATABASE *PeiPcdDb;
|
||||||
DYNAMICEX_MAPPING *ExMapTable;
|
DYNAMICEX_MAPPING *ExMapTable;
|
||||||
UINTN i;
|
UINTN Index;
|
||||||
BOOLEAN Found;
|
BOOLEAN Found;
|
||||||
BOOLEAN PeiExMapTableEmpty;
|
BOOLEAN PeiExMapTableEmpty;
|
||||||
|
|
||||||
@ -644,18 +1064,18 @@ PeiPcdGetNextTokenSpace (
|
|||||||
GuidTableIdx = MatchGuid - PeiPcdDb->Init.GuidTable;
|
GuidTableIdx = MatchGuid - PeiPcdDb->Init.GuidTable;
|
||||||
|
|
||||||
Found = FALSE;
|
Found = FALSE;
|
||||||
for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
for (Index = 0; Index < PEI_EXMAPPING_TABLE_SIZE; Index++) {
|
||||||
if (ExMapTable[i].ExGuidIndex == GuidTableIdx) {
|
if (ExMapTable[Index].ExGuidIndex == GuidTableIdx) {
|
||||||
Found = TRUE;
|
Found = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Found) {
|
if (Found) {
|
||||||
i++;
|
Index++;
|
||||||
for ( ; i < PEI_EXMAPPING_TABLE_SIZE; i++ ) {
|
for ( ; Index < PEI_EXMAPPING_TABLE_SIZE; Index++ ) {
|
||||||
if (ExMapTable[i].ExGuidIndex != GuidTableIdx ) {
|
if (ExMapTable[Index].ExGuidIndex != GuidTableIdx ) {
|
||||||
*Guid = &PeiPcdDb->Init.GuidTable[ExMapTable[i].ExGuidIndex];
|
*Guid = &PeiPcdDb->Init.GuidTable[ExMapTable[Index].ExGuidIndex];
|
||||||
return EFI_SUCCESS;
|
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
|
UINTN
|
||||||
GetPtrTypeSize (
|
GetPtrTypeSize (
|
||||||
IN UINTN LocalTokenNumberTableIdx,
|
IN UINTN LocalTokenNumberTableIdx,
|
||||||
@ -678,7 +1111,7 @@ GetPtrTypeSize (
|
|||||||
UINTN LocalTokenNumber;
|
UINTN LocalTokenNumber;
|
||||||
SKU_ID *SkuIdTable;
|
SKU_ID *SkuIdTable;
|
||||||
SIZE_INFO *SizeTable;
|
SIZE_INFO *SizeTable;
|
||||||
UINTN i;
|
UINTN Index;
|
||||||
|
|
||||||
SizeTableIdx = GetSizeTableIndex (LocalTokenNumberTableIdx, Database);
|
SizeTableIdx = GetSizeTableIndex (LocalTokenNumberTableIdx, Database);
|
||||||
|
|
||||||
@ -693,7 +1126,7 @@ GetPtrTypeSize (
|
|||||||
// SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
|
// SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
|
||||||
// PCD entry.
|
// PCD entry.
|
||||||
//
|
//
|
||||||
if (LocalTokenNumber & PCD_TYPE_VPD) {
|
if ((LocalTokenNumber & PCD_TYPE_VPD) != 0) {
|
||||||
//
|
//
|
||||||
// We have only one entry for VPD enabled PCD entry:
|
// We have only one entry for VPD enabled PCD entry:
|
||||||
// 1) MAX Size.
|
// 1) MAX Size.
|
||||||
@ -715,9 +1148,9 @@ GetPtrTypeSize (
|
|||||||
// 2) Current Size for each SKU_ID (It is equal to MaxSku).
|
// 2) Current Size for each SKU_ID (It is equal to MaxSku).
|
||||||
//
|
//
|
||||||
SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, Database);
|
SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, Database);
|
||||||
for (i = 0; i < SkuIdTable[0]; i++) {
|
for (Index = 0; Index < SkuIdTable[0]; Index++) {
|
||||||
if (SkuIdTable[1 + i] == Database->Init.SystemSkuId) {
|
if (SkuIdTable[1 + Index] == Database->Init.SystemSkuId) {
|
||||||
return SizeTable[SizeTableIdx + 1 + i];
|
return SizeTable[SizeTableIdx + 1 + Index];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return SizeTable[SizeTableIdx + 1];
|
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
|
BOOLEAN
|
||||||
SetPtrTypeSize (
|
SetPtrTypeSize (
|
||||||
IN UINTN LocalTokenNumberTableIdx,
|
IN UINTN LocalTokenNumberTableIdx,
|
||||||
@ -738,7 +1183,7 @@ SetPtrTypeSize (
|
|||||||
UINTN LocalTokenNumber;
|
UINTN LocalTokenNumber;
|
||||||
SKU_ID *SkuIdTable;
|
SKU_ID *SkuIdTable;
|
||||||
SIZE_INFO *SizeTable;
|
SIZE_INFO *SizeTable;
|
||||||
UINTN i;
|
UINTN Index;
|
||||||
UINTN MaxSize;
|
UINTN MaxSize;
|
||||||
|
|
||||||
SizeTableIdx = GetSizeTableIndex (LocalTokenNumberTableIdx, Database);
|
SizeTableIdx = GetSizeTableIndex (LocalTokenNumberTableIdx, Database);
|
||||||
@ -754,7 +1199,7 @@ SetPtrTypeSize (
|
|||||||
// SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
|
// SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
|
||||||
// PCD entry.
|
// 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
|
// 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).
|
// 2) Current Size for each SKU_ID (It is equal to MaxSku).
|
||||||
//
|
//
|
||||||
SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, Database);
|
SkuIdTable = GetSkuIdArray (LocalTokenNumberTableIdx, Database);
|
||||||
for (i = 0; i < SkuIdTable[0]; i++) {
|
for (Index = 0; Index < SkuIdTable[0]; Index++) {
|
||||||
if (SkuIdTable[1 + i] == Database->Init.SystemSkuId) {
|
if (SkuIdTable[1 + Index] == Database->Init.SystemSkuId) {
|
||||||
SizeTable[SizeTableIdx + 1 + i] = (SIZE_INFO) *CurrentSize;
|
SizeTable[SizeTableIdx + 1 + Index] = (SIZE_INFO) *CurrentSize;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,7 @@ 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 TokenNumber The token number.
|
@param ExTokenNumber The token number.
|
||||||
@param Guid The GUID space.
|
@param Guid The GUID space.
|
||||||
@param CallBackFunction The Callback function to be registered.
|
@param CallBackFunction The Callback function to be registered.
|
||||||
@param Register To register or unregister the callback function.
|
@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_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
|
@retval EFI_OUT_OF_RESOURCES If the callback function can't be registered because there is not free
|
||||||
slot left in the CallbackFnTable.
|
slot left in the CallbackFnTable.
|
||||||
--*/
|
**/
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
PeiRegisterCallBackWorker (
|
PeiRegisterCallBackWorker (
|
||||||
IN UINTN ExTokenNumber,
|
IN UINTN ExTokenNumber,
|
||||||
@ -103,16 +103,9 @@ PeiRegisterCallBackWorker (
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
The function builds the PCD database.
|
The function builds the PCD database.
|
||||||
|
**/
|
||||||
@param VOID
|
|
||||||
|
|
||||||
@retval VOID
|
|
||||||
--*/
|
|
||||||
VOID
|
VOID
|
||||||
BuildPcdDatabase (
|
BuildPcdDatabase (
|
||||||
VOID
|
VOID
|
||||||
@ -137,12 +130,8 @@ BuildPcdDatabase (
|
|||||||
CallbackFnTable = BuildGuidHob (&gPcdPeiCallbackFnTableHobGuid, SizeOfCallbackFnTable);
|
CallbackFnTable = BuildGuidHob (&gPcdPeiCallbackFnTableHobGuid, SizeOfCallbackFnTable);
|
||||||
|
|
||||||
ZeroMem (CallbackFnTable, SizeOfCallbackFnTable);
|
ZeroMem (CallbackFnTable, SizeOfCallbackFnTable);
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
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.
|
||||||
@ -154,8 +143,7 @@ BuildPcdDatabase (
|
|||||||
|
|
||||||
@retval EFI_SUCCESS Operation successful.
|
@retval EFI_SUCCESS Operation successful.
|
||||||
@retval EFI_NOT_FOUND Variablel not found.
|
@retval EFI_NOT_FOUND Variablel not found.
|
||||||
--*/
|
**/
|
||||||
STATIC
|
|
||||||
EFI_STATUS
|
EFI_STATUS
|
||||||
GetHiiVariable (
|
GetHiiVariable (
|
||||||
IN CONST EFI_GUID *VariableGuid,
|
IN CONST EFI_GUID *VariableGuid,
|
||||||
@ -201,13 +189,20 @@ GetHiiVariable (
|
|||||||
*VariableData = Buffer;
|
*VariableData = Buffer;
|
||||||
|
|
||||||
return EFI_SUCCESS;
|
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
|
UINT32
|
||||||
GetSkuEnabledTokenNumber (
|
GetSkuEnabledTokenNumber (
|
||||||
UINT32 LocalTokenNumber,
|
UINT32 LocalTokenNumber,
|
||||||
@ -217,7 +212,7 @@ GetSkuEnabledTokenNumber (
|
|||||||
PEI_PCD_DATABASE *PeiPcdDb;
|
PEI_PCD_DATABASE *PeiPcdDb;
|
||||||
SKU_HEAD *SkuHead;
|
SKU_HEAD *SkuHead;
|
||||||
SKU_ID *SkuIdTable;
|
SKU_ID *SkuIdTable;
|
||||||
INTN i;
|
INTN Index;
|
||||||
UINT8 *Value;
|
UINT8 *Value;
|
||||||
|
|
||||||
PeiPcdDb = GetPcdDatabase ();
|
PeiPcdDb = GetPcdDatabase ();
|
||||||
@ -228,27 +223,27 @@ GetSkuEnabledTokenNumber (
|
|||||||
Value = (UINT8 *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuDataStartOffset));
|
Value = (UINT8 *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuDataStartOffset));
|
||||||
SkuIdTable = (SKU_ID *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuIdTableOffset));
|
SkuIdTable = (SKU_ID *) ((UINT8 *)PeiPcdDb + (SkuHead->SkuIdTableOffset));
|
||||||
|
|
||||||
for (i = 0; i < SkuIdTable[0]; i++) {
|
for (Index = 0; Index < SkuIdTable[0]; Index++) {
|
||||||
if (PeiPcdDb->Init.SystemSkuId == SkuIdTable[i + 1]) {
|
if (PeiPcdDb->Init.SystemSkuId == SkuIdTable[Index + 1]) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {
|
switch (LocalTokenNumber & PCD_TYPE_ALL_SET) {
|
||||||
case PCD_TYPE_VPD:
|
case PCD_TYPE_VPD:
|
||||||
Value = (UINT8 *) &(((VPD_HEAD *) Value)[i]);
|
Value = (UINT8 *) &(((VPD_HEAD *) Value)[Index]);
|
||||||
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_VPD);
|
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_VPD);
|
||||||
|
|
||||||
case PCD_TYPE_HII:
|
case PCD_TYPE_HII:
|
||||||
Value = (UINT8 *) &(((VARIABLE_HEAD *) Value)[i]);
|
Value = (UINT8 *) &(((VARIABLE_HEAD *) Value)[Index]);
|
||||||
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_HII);
|
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_HII);
|
||||||
|
|
||||||
case PCD_TYPE_STRING:
|
case PCD_TYPE_STRING:
|
||||||
Value = (UINT8 *) &(((STRING_HEAD *) Value)[i]);
|
Value = (UINT8 *) &(((STRING_HEAD *) Value)[Index]);
|
||||||
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_STRING);
|
return (UINT32) ((Value - (UINT8 *) PeiPcdDb) | PCD_TYPE_STRING);
|
||||||
|
|
||||||
case PCD_TYPE_DATA:
|
case PCD_TYPE_DATA:
|
||||||
Value += Size * i;
|
Value += Size * Index;
|
||||||
return (UINT32) (Value - (UINT8 *) PeiPcdDb);
|
return (UINT32) (Value - (UINT8 *) PeiPcdDb);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -258,12 +253,21 @@ GetSkuEnabledTokenNumber (
|
|||||||
ASSERT (FALSE);
|
ASSERT (FALSE);
|
||||||
|
|
||||||
return 0;
|
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
|
VOID
|
||||||
InvokeCallbackOnSet (
|
InvokeCallbackOnSet (
|
||||||
UINTN ExTokenNumber,
|
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
|
EFI_STATUS
|
||||||
SetValueWorker (
|
SetValueWorker (
|
||||||
IN UINTN TokenNumber,
|
IN UINTN TokenNumber,
|
||||||
@ -322,12 +333,25 @@ SetValueWorker (
|
|||||||
return SetWorker (TokenNumber, Data, &Size, FALSE);
|
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
|
EFI_STATUS
|
||||||
SetWorker (
|
SetWorker (
|
||||||
IN UINTN TokenNumber,
|
IN UINTN TokenNumber,
|
||||||
IN OUT VOID *Data,
|
IN VOID *Data,
|
||||||
IN OUT UINTN *Size,
|
IN OUT UINTN *Size,
|
||||||
IN BOOLEAN PtrType
|
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
|
EFI_STATUS
|
||||||
ExSetValueWorker (
|
ExSetValueWorker (
|
||||||
IN UINTN ExTokenNumber,
|
IN UINTN ExTokenNumber,
|
||||||
@ -455,8 +488,24 @@ ExSetValueWorker (
|
|||||||
return ExSetWorker (ExTokenNumber, Guid, Data, &Size, FALSE);
|
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
|
EFI_STATUS
|
||||||
ExSetWorker (
|
ExSetWorker (
|
||||||
IN UINTN ExTokenNumber,
|
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 *
|
VOID *
|
||||||
ExGetWorker (
|
ExGetWorker (
|
||||||
IN CONST EFI_GUID *Guid,
|
IN CONST EFI_GUID *Guid,
|
||||||
@ -498,13 +554,24 @@ ExGetWorker (
|
|||||||
return GetWorker (GetExPcdTokenNumber (Guid, ExTokenNumber), GetSize);
|
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 *
|
VOID *
|
||||||
GetWorker (
|
GetWorker (
|
||||||
UINTN TokenNumber,
|
IN UINTN TokenNumber,
|
||||||
UINTN GetSize
|
IN UINTN GetSize
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UINT32 Offset;
|
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
|
UINTN
|
||||||
GetExPcdTokenNumber (
|
GetExPcdTokenNumber (
|
||||||
IN CONST EFI_GUID *Guid,
|
IN CONST EFI_GUID *Guid,
|
||||||
IN UINTN ExTokenNumber
|
IN UINTN ExTokenNumber
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UINT32 i;
|
UINT32 Index;
|
||||||
DYNAMICEX_MAPPING *ExMap;
|
DYNAMICEX_MAPPING *ExMap;
|
||||||
EFI_GUID *GuidTable;
|
EFI_GUID *GuidTable;
|
||||||
EFI_GUID *MatchGuid;
|
EFI_GUID *MatchGuid;
|
||||||
@ -625,10 +703,10 @@ GetExPcdTokenNumber (
|
|||||||
|
|
||||||
MatchGuidIdx = MatchGuid - GuidTable;
|
MatchGuidIdx = MatchGuid - GuidTable;
|
||||||
|
|
||||||
for (i = 0; i < PEI_EXMAPPING_TABLE_SIZE; i++) {
|
for (Index = 0; Index < PEI_EXMAPPING_TABLE_SIZE; Index++) {
|
||||||
if ((ExTokenNumber == ExMap[i].ExTokenNumber) &&
|
if ((ExTokenNumber == ExMap[Index].ExTokenNumber) &&
|
||||||
(MatchGuidIdx == ExMap[i].ExGuidIndex)) {
|
(MatchGuidIdx == ExMap[Index].ExGuidIndex)) {
|
||||||
return ExMap[i].LocalTokenNumber;
|
return ExMap[Index].LocalTokenNumber;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -637,8 +715,12 @@ GetExPcdTokenNumber (
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get PCD database from GUID HOB in PEI phase.
|
||||||
|
|
||||||
|
@return Pointer to PCD database.
|
||||||
|
|
||||||
|
**/
|
||||||
PEI_PCD_DATABASE *
|
PEI_PCD_DATABASE *
|
||||||
GetPcdDatabase (
|
GetPcdDatabase (
|
||||||
VOID
|
VOID
|
||||||
@ -652,8 +734,15 @@ GetPcdDatabase (
|
|||||||
return (PEI_PCD_DATABASE *) GET_GUID_HOB_DATA (GuidHob);
|
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 *
|
SKU_ID *
|
||||||
GetSkuIdArray (
|
GetSkuIdArray (
|
||||||
IN UINTN LocalTokenNumberTableIdx,
|
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
|
UINTN
|
||||||
GetSizeTableIndex (
|
GetSizeTableIndex (
|
||||||
IN UINTN LocalTokenNumberTableIdx,
|
IN UINTN LocalTokenNumberTableIdx,
|
||||||
IN PEI_PCD_DATABASE *Database
|
IN PEI_PCD_DATABASE *Database
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
UINTN i;
|
UINTN Index;
|
||||||
UINTN SizeTableIdx;
|
UINTN SizeTableIdx;
|
||||||
UINTN LocalTokenNumber;
|
UINTN LocalTokenNumber;
|
||||||
SKU_ID *SkuIdTable;
|
SKU_ID *SkuIdTable;
|
||||||
|
|
||||||
SizeTableIdx = 0;
|
SizeTableIdx = 0;
|
||||||
|
|
||||||
for (i=0; i<LocalTokenNumberTableIdx; i++) {
|
for (Index=0; Index<LocalTokenNumberTableIdx; Index++) {
|
||||||
LocalTokenNumber = Database->Init.LocalTokenNumberTable[i];
|
LocalTokenNumber = Database->Init.LocalTokenNumberTable[Index];
|
||||||
|
|
||||||
if ((LocalTokenNumber & PCD_DATUM_TYPE_ALL_SET) == PCD_DATUM_TYPE_POINTER) {
|
if ((LocalTokenNumber & PCD_DATUM_TYPE_ALL_SET) == PCD_DATUM_TYPE_POINTER) {
|
||||||
//
|
//
|
||||||
// SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
|
// SizeTable only contain record for PCD_DATUM_TYPE_POINTER type
|
||||||
// PCD entry.
|
// PCD entry.
|
||||||
//
|
//
|
||||||
if (LocalTokenNumber & PCD_TYPE_VPD) {
|
if ((LocalTokenNumber & PCD_TYPE_VPD) != 0) {
|
||||||
//
|
//
|
||||||
// We have only one entry for VPD enabled PCD entry:
|
// We have only one entry for VPD enabled PCD entry:
|
||||||
// 1) MAX Size.
|
// 1) MAX Size.
|
||||||
@ -717,7 +813,7 @@ GetSizeTableIndex (
|
|||||||
// 1) MAX SIZE
|
// 1) MAX SIZE
|
||||||
// 2) Current Size for each SKU_ID (It is equal to MaxSku).
|
// 2) Current Size for each SKU_ID (It is equal to MaxSku).
|
||||||
//
|
//
|
||||||
SkuIdTable = GetSkuIdArray (i, Database);
|
SkuIdTable = GetSkuIdArray (Index, Database);
|
||||||
SizeTableIdx += (UINTN)*SkuIdTable + 1;
|
SizeTableIdx += (UINTN)*SkuIdTable + 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,8 @@ Module Name: Service.h
|
|||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
#ifndef _SERVICE_H
|
#ifndef _PEI_PCD_SERVICE_H_
|
||||||
#define _SERVICE_H
|
#define _PEI_PCD_SERVICE_H_
|
||||||
|
|
||||||
#include <PiPei.h>
|
#include <PiPei.h>
|
||||||
#include <Ppi/ReadOnlyVariable2.h>
|
#include <Ppi/ReadOnlyVariable2.h>
|
||||||
@ -48,6 +48,30 @@ Module Name: Service.h
|
|||||||
//
|
//
|
||||||
// PPI Interface Implementation Declaration.
|
// 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
|
VOID
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetSku (
|
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
|
UINT8
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet8 (
|
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
|
UINT16
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet16 (
|
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
|
UINT32
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet32 (
|
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
|
UINT64
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet64 (
|
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 *
|
VOID *
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetPtr (
|
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
|
BOOLEAN
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetBool (
|
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
|
UINTN
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetSize (
|
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
|
UINT8
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet8Ex (
|
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
|
UINT16
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet16Ex (
|
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
|
UINT32
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet32Ex (
|
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
|
UINT64
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGet64Ex (
|
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 *
|
VOID *
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetPtrEx (
|
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
|
BOOLEAN
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetBoolEx (
|
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
|
UINTN
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetSizeEx (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet8 (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet16 (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet32 (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet64 (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetPtr (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetBool (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet8Ex (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet16Ex (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet32Ex (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSet64Ex (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetPtrEx (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdSetBoolEx (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiRegisterCallBackOnSet (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PcdUnRegisterCallBackOnSet (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetNextToken (
|
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
|
EFI_STATUS
|
||||||
EFIAPI
|
EFIAPI
|
||||||
PeiPcdGetNextTokenSpace (
|
PeiPcdGetNextTokenSpace (
|
||||||
IN CONST EFI_GUID **Guid
|
IN OUT CONST EFI_GUID **Guid
|
||||||
)
|
)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
/* Internal Function definitions */
|
/* Internal Function definitions */
|
||||||
|
/**
|
||||||
|
Get PCD database from GUID HOB in PEI phase.
|
||||||
|
|
||||||
|
@return Pointer to PCD database.
|
||||||
|
|
||||||
|
**/
|
||||||
PEI_PCD_DATABASE *
|
PEI_PCD_DATABASE *
|
||||||
GetPcdDatabase (
|
GetPcdDatabase (
|
||||||
VOID
|
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
|
EFI_STATUS
|
||||||
SetValueWorker (
|
SetValueWorker (
|
||||||
IN UINTN TokenNumber,
|
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
|
EFI_STATUS
|
||||||
SetWorker (
|
SetWorker (
|
||||||
IN UINTN TokenNumber,
|
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
|
EFI_STATUS
|
||||||
ExSetValueWorker (
|
ExSetValueWorker (
|
||||||
IN UINTN ExTokenNumber,
|
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
|
EFI_STATUS
|
||||||
ExSetWorker (
|
ExSetWorker (
|
||||||
IN UINTN ExTokenNumber,
|
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 *
|
VOID *
|
||||||
GetWorker (
|
GetWorker (
|
||||||
IN UINTN TokenNumber,
|
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 *
|
VOID *
|
||||||
ExGetWorker (
|
ExGetWorker (
|
||||||
IN CONST EFI_GUID *Guid,
|
IN CONST EFI_GUID *Guid,
|
||||||
@ -400,7 +928,19 @@ typedef struct {
|
|||||||
UINT32 LocalTokenNumberAlias;
|
UINT32 LocalTokenNumberAlias;
|
||||||
} EX_PCD_ENTRY_ATTRIBUTE;
|
} 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
|
UINTN
|
||||||
GetExPcdTokenNumber (
|
GetExPcdTokenNumber (
|
||||||
IN CONST EFI_GUID *Guid,
|
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
|
EFI_STATUS
|
||||||
PeiRegisterCallBackWorker (
|
PeiRegisterCallBackWorker (
|
||||||
IN UINTN TokenNumber,
|
IN UINTN TokenNumber,
|
||||||
IN CONST GUID *Guid, OPTIONAL
|
IN CONST EFI_GUID *Guid, OPTIONAL
|
||||||
IN PCD_PPI_CALLBACK CallBackFunction,
|
IN PCD_PPI_CALLBACK CallBackFunction,
|
||||||
IN BOOLEAN Register
|
IN BOOLEAN Register
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
The function builds the PCD database.
|
||||||
|
**/
|
||||||
VOID
|
VOID
|
||||||
BuildPcdDatabase (
|
BuildPcdDatabase (
|
||||||
VOID
|
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 *
|
SKU_ID *
|
||||||
GetSkuIdArray (
|
GetSkuIdArray (
|
||||||
IN UINTN LocalTokenNumberTableIdx,
|
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
|
UINTN
|
||||||
GetSizeTableIndex (
|
GetSizeTableIndex (
|
||||||
IN UINTN LocalTokenNumberTableIdx,
|
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
|
UINTN
|
||||||
GetPtrTypeSize (
|
GetPtrTypeSize (
|
||||||
IN UINTN LocalTokenNumberTableIdx,
|
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
|
BOOLEAN
|
||||||
SetPtrTypeSize (
|
SetPtrTypeSize (
|
||||||
IN UINTN LocalTokenNumberTableIdx,
|
IN UINTN LocalTokenNumberTableIdx,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user