X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=MdePkg%2FLibrary%2FPeiPcdLib%2FPeiPcdLib.c;h=916a2c0844ebf828e3f0362233e25ea18ec54b32;hb=9344f0921518309295da89c221d10cbead8531aa;hp=2e2dbb6ac51c59603c0926a3696a4f0b819d3730;hpb=c00bdbb14ae126f1f614f396eae19a36afc863c6;p=mirror_edk2.git diff --git a/MdePkg/Library/PeiPcdLib/PeiPcdLib.c b/MdePkg/Library/PeiPcdLib/PeiPcdLib.c index 2e2dbb6ac5..916a2c0844 100644 --- a/MdePkg/Library/PeiPcdLib/PeiPcdLib.c +++ b/MdePkg/Library/PeiPcdLib/PeiPcdLib.c @@ -1,14 +1,8 @@ /** @file Implementation of PcdLib class library for PEI phase. -Copyright (c) 2006 - 2008, Intel Corporation
-All rights reserved. This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.
+SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -19,6 +13,9 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include +#include +#include +#include #include #include @@ -28,34 +25,102 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. /** Retrieve the PCD_PPI pointer. - This function is to locate PCD_PPI PPI via PeiService. + This function is to locate PCD_PPI PPI via PeiService. If fail to locate PCD_PPI, then ASSERT_EFI_ERROR(). - + @retval PCD_PPI * The pointer to the PCD_PPI. **/ PCD_PPI * GetPcdPpiPointer ( VOID - ) + ) { EFI_STATUS Status; PCD_PPI *PcdPpi; - + Status = PeiServicesLocatePpi (&gPcdPpiGuid, 0, NULL, (VOID **)&PcdPpi); ASSERT_EFI_ERROR (Status); return PcdPpi; } +/** + Retrieve the pointer of EFI_PEI_PCD_PPI defined in PI 1.2 Vol 3. + + This function is to locate EFI_PEI_PCD_PPI PPI via PeiService. + If fail to locate EFI_PEI_PCD_PPI, then ASSERT_EFI_ERROR(). + + @retval EFI_PEI_PCD_PPI * The pointer to the EFI_PEI_PCD_PPI. + +**/ +EFI_PEI_PCD_PPI * +GetPiPcdPpiPointer ( + VOID + ) +{ + EFI_STATUS Status; + EFI_PEI_PCD_PPI *PiPcdPpi; + + Status = PeiServicesLocatePpi (&gEfiPeiPcdPpiGuid, 0, NULL, (VOID **)&PiPcdPpi); + ASSERT_EFI_ERROR (Status); + + return PiPcdPpi; +} + +/** + Retrieve the GET_PCD_INFO_PPI pointer. + + This function is to locate GET_PCD_INFO_PPI PPI via PeiService. + If fail to locate GET_PCD_INFO_PPI, then ASSERT_EFI_ERROR(). + + @retval GET_PCD_INFO_PPI * The pointer to the GET_PCD_INFO_PPI. + +**/ +GET_PCD_INFO_PPI * +GetPcdInfoPpiPointer ( + VOID + ) +{ + EFI_STATUS Status; + GET_PCD_INFO_PPI *PcdInfoPpi; + + Status = PeiServicesLocatePpi (&gGetPcdInfoPpiGuid, 0, NULL, (VOID **)&PcdInfoPpi); + ASSERT_EFI_ERROR (Status); + + return PcdInfoPpi; +} + +/** + Retrieve the pointer of EFI_GET_PCD_INFO_PPI defined in PI 1.2.1 Vol 3. + + This function is to locate EFI_GET_PCD_INFO_PPI PPI via PeiService. + If fail to locate EFI_GET_PCD_INFO_PPI, then ASSERT_EFI_ERROR(). + + @retval EFI_GET_PCD_INFO_PPI * The pointer to the EFI_GET_PCD_INFO_PPI. + +**/ +EFI_GET_PCD_INFO_PPI * +GetPiPcdInfoPpiPointer ( + VOID + ) +{ + EFI_STATUS Status; + EFI_GET_PCD_INFO_PPI *PiPcdInfoPpi; + + Status = PeiServicesLocatePpi (&gEfiGetPcdInfoPpiGuid, 0, NULL, (VOID **)&PiPcdInfoPpi); + ASSERT_EFI_ERROR (Status); + + return PiPcdInfoPpi; +} + /** This function provides a means by which SKU support can be established in the PCD infrastructure. Sets the current SKU in the PCD database to the value specified by SkuId. SkuId is returned. - If SkuId >= PCD_MAX_SKU_ID, then ASSERT(). - @param SkuId The SKU value that will be used when the PCD service retrieves and sets values - associated with a PCD token. + @param SkuId The SKU value that will be used when the PCD service retrieves + and sets values associated with a PCD token. @return Return the SKU ID that just be set. @@ -66,10 +131,7 @@ LibPcdSetSku ( IN UINTN SkuId ) { - - ASSERT (SkuId < PCD_MAX_SKU_ID); - - GetPcdPpiPointer()->SetSku (SkuId); + GetPiPcdPpiPointer()->SetSku (SkuId); return SkuId; } @@ -78,12 +140,12 @@ LibPcdSetSku ( /** This function provides a means by which to retrieve a value for a given PCD token. - - Returns the 8-bit value for the token specified by TokenNumber. + + Returns the 8-bit value for the token specified by TokenNumber. @param[in] TokenNumber The PCD token number to retrieve a current value for. - @return Returns the 8-bit value for the token specified by TokenNumber. + @return Returns the 8-bit value for the token specified by TokenNumber. **/ UINT8 @@ -99,12 +161,12 @@ LibPcdGet8 ( /** This function provides a means by which to retrieve a value for a given PCD token. - - Returns the 16-bit value for the token specified by TokenNumber. + + Returns the 16-bit value for the token specified by TokenNumber. @param[in] TokenNumber The PCD token number to retrieve a current value for. - @return Returns the 16-bit value for the token specified by TokenNumber. + @return Returns the 16-bit value for the token specified by TokenNumber. **/ UINT16 @@ -120,8 +182,8 @@ LibPcdGet16 ( /** This function provides a means by which to retrieve a value for a given PCD token. - - Returns the 32-bit value for the token specified by TokenNumber. + + Returns the 32-bit value for the token specified by TokenNumber. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -141,7 +203,7 @@ LibPcdGet32 ( /** This function provides a means by which to retrieve a value for a given PCD token. - + Returns the 64-bit value for the token specified by TokenNumber. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -162,7 +224,7 @@ LibPcdGet64 ( /** This function provides a means by which to retrieve a value for a given PCD token. - + Returns the pointer to the buffer of the token specified by TokenNumber. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -183,15 +245,15 @@ LibPcdGetPtr ( /** This function provides a means by which to retrieve a value for a given PCD token. - - Returns the Boolean value of the token specified by TokenNumber. + + Returns the Boolean value of the token specified by TokenNumber. @param[in] TokenNumber The PCD token number to retrieve a current value for. - @return Returns the Boolean value of the token specified by TokenNumber. + @return Returns the Boolean value of the token specified by TokenNumber. **/ -BOOLEAN +BOOLEAN EFIAPI LibPcdGetBool ( IN UINTN TokenNumber @@ -207,7 +269,7 @@ LibPcdGetBool ( @param[in] TokenNumber The PCD token number to retrieve a current value for. - @return Returns the size of the token specified by TokenNumber. + @return Returns the size of the token specified by TokenNumber. **/ UINTN @@ -223,12 +285,12 @@ LibPcdGetSize ( /** This function provides a means by which to retrieve a value for a given PCD token. - + Returns the 8-bit value for the token specified by TokenNumber and Guid. - - If Guid is NULL, then ASSERT(). - @param[in] Guid Pointer to a 128-bit unique value that designates + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to retrieve a value from. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -244,7 +306,7 @@ LibPcdGetEx8 ( { ASSERT (Guid != NULL); - return (GetPcdPpiPointer ())->Get8Ex (Guid, TokenNumber); + return (GetPiPcdPpiPointer ())->Get8 (Guid, TokenNumber); } @@ -253,10 +315,10 @@ LibPcdGetEx8 ( This function provides a means by which to retrieve a value for a given PCD token. Returns the 16-bit value for the token specified by TokenNumber and Guid. - - If Guid is NULL, then ASSERT(). - @param[in] Guid Pointer to a 128-bit unique value that designates + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to retrieve a value from. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -273,16 +335,16 @@ LibPcdGetEx16 ( ASSERT (Guid != NULL); - return (GetPcdPpiPointer ())->Get16Ex (Guid, TokenNumber); + return (GetPiPcdPpiPointer ())->Get16 (Guid, TokenNumber); } /** Returns the 32-bit value for the token specified by TokenNumber and Guid. - If Guid is NULL, then ASSERT(). + If Guid is NULL, then ASSERT(). - @param[in] Guid Pointer to a 128-bit unique value that designates + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to retrieve a value from. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -298,7 +360,7 @@ LibPcdGetEx32 ( { ASSERT (Guid != NULL); - return (GetPcdPpiPointer ())->Get32Ex (Guid, TokenNumber); + return (GetPiPcdPpiPointer ())->Get32 (Guid, TokenNumber); } @@ -306,12 +368,12 @@ LibPcdGetEx32 ( /** This function provides a means by which to retrieve a value for a given PCD token. - + Returns the 64-bit value for the token specified by TokenNumber and Guid. - - If Guid is NULL, then ASSERT(). - @param[in] Guid Pointer to a 128-bit unique value that designates + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to retrieve a value from. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -326,19 +388,19 @@ LibPcdGetEx64 ( ) { ASSERT (Guid != NULL); - return (GetPcdPpiPointer ())->Get64Ex (Guid, TokenNumber); + return (GetPiPcdPpiPointer ())->Get64 (Guid, TokenNumber); } /** This function provides a means by which to retrieve a value for a given PCD token. - + Returns the pointer to the buffer of token specified by TokenNumber and Guid. - - If Guid is NULL, then ASSERT(). - @param[in] Guid Pointer to a 128-bit unique value that designates + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to retrieve a value from. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -354,19 +416,19 @@ LibPcdGetExPtr ( { ASSERT (Guid != NULL); - return (GetPcdPpiPointer ())->GetPtrEx (Guid, TokenNumber); + return (GetPiPcdPpiPointer ())->GetPtr (Guid, TokenNumber); } /** This function provides a means by which to retrieve a value for a given PCD token. - - Returns the Boolean value of the token specified by TokenNumber and Guid. - - If Guid is NULL, then ASSERT(). - @param[in] Guid Pointer to a 128-bit unique value that designates + Returns the Boolean value of the token specified by TokenNumber and Guid. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to retrieve a value from. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -381,19 +443,19 @@ LibPcdGetExBool ( ) { ASSERT (Guid != NULL); - return (GetPcdPpiPointer ())->GetBoolEx (Guid, TokenNumber); + return (GetPiPcdPpiPointer ())->GetBool (Guid, TokenNumber); } /** This function provides a means by which to retrieve the size of a given PCD token. - - Returns the size of the token specified by TokenNumber and Guid. - - If Guid is NULL, then ASSERT(). - @param[in] Guid Pointer to a 128-bit unique value that designates + Returns the size of the token specified by TokenNumber and Guid. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to retrieve a value from. @param[in] TokenNumber The PCD token number to retrieve a current value for. @@ -408,21 +470,22 @@ LibPcdGetExSize ( ) { ASSERT (Guid != NULL); - return (GetPcdPpiPointer ())->GetSizeEx (Guid, TokenNumber); + return (GetPiPcdPpiPointer ())->GetSize (Guid, TokenNumber); } +#ifndef DISABLE_NEW_DEPRECATED_INTERFACES /** This function provides a means by which to set a value for a given PCD token. - - Sets the 8-bit value for the token specified by TokenNumber + + Sets the 8-bit value for the token specified by TokenNumber to the value specified by Value. Value is returned. - + @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The 8-bit value to set. - @return Return the value been set. + @return Return the value that was set. **/ UINT8 @@ -432,12 +495,8 @@ LibPcdSet8 ( IN UINT8 Value ) { - EFI_STATUS Status; + (GetPcdPpiPointer ())->Set8 (TokenNumber, Value); - Status = (GetPcdPpiPointer ())->Set8 (TokenNumber, Value); - - ASSERT_EFI_ERROR (Status); - return Value; } @@ -445,14 +504,14 @@ LibPcdSet8 ( /** This function provides a means by which to set a value for a given PCD token. - - Sets the 16-bit value for the token specified by TokenNumber + + Sets the 16-bit value for the token specified by TokenNumber to the value specified by Value. Value is returned. - + @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The 16-bit value to set. - @return Return the value been set. + @return Return the value that was set. **/ UINT16 @@ -462,12 +521,8 @@ LibPcdSet16 ( IN UINT16 Value ) { - EFI_STATUS Status; - - Status = (GetPcdPpiPointer ())->Set16 (TokenNumber, Value); + (GetPcdPpiPointer ())->Set16 (TokenNumber, Value); - ASSERT_EFI_ERROR (Status); - return Value; } @@ -475,14 +530,14 @@ LibPcdSet16 ( /** This function provides a means by which to set a value for a given PCD token. - - Sets the 32-bit value for the token specified by TokenNumber + + Sets the 32-bit value for the token specified by TokenNumber to the value specified by Value. Value is returned. - + @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The 32-bit value to set. - @return Return the value been set. + @return Return the value that was set. **/ UINT32 @@ -492,11 +547,7 @@ LibPcdSet32 ( IN UINT32 Value ) { - EFI_STATUS Status; - - Status = (GetPcdPpiPointer ())->Set32 (TokenNumber, Value); - - ASSERT_EFI_ERROR (Status); + (GetPcdPpiPointer ())->Set32 (TokenNumber, Value); return Value; } @@ -505,14 +556,14 @@ LibPcdSet32 ( /** This function provides a means by which to set a value for a given PCD token. - - Sets the 64-bit value for the token specified by TokenNumber + + Sets the 64-bit value for the token specified by TokenNumber to the value specified by Value. Value is returned. - + @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The 64-bit value to set. - @return Return the value been set. + @return Return the value that was set. **/ UINT64 @@ -522,11 +573,7 @@ LibPcdSet64 ( IN UINT64 Value ) { - EFI_STATUS Status; - - Status = (GetPcdPpiPointer ())->Set64 (TokenNumber, Value); - - ASSERT_EFI_ERROR (Status); + (GetPcdPpiPointer ())->Set64 (TokenNumber, Value); return Value; } @@ -535,19 +582,19 @@ LibPcdSet64 ( /** This function provides a means by which to set a value for a given PCD token. - - Sets a buffer for the token specified by TokenNumber to the value - specified by Buffer and SizeOfBuffer. Buffer is returned. - If SizeOfBuffer is greater than the maximum size support by TokenNumber, - then set SizeOfBuffer to the maximum size supported by TokenNumber and - return NULL to indicate that the set operation was not actually performed. - - If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the + + Sets a buffer for the token specified by TokenNumber to the value + specified by Buffer and SizeOfBuffer. Buffer is returned. + If SizeOfBuffer is greater than the maximum size support by TokenNumber, + then set SizeOfBuffer to the maximum size supported by TokenNumber and + return NULL to indicate that the set operation was not actually performed. + + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size supported by TokenName and NULL must be returned. - + If SizeOfBuffer is NULL, then ASSERT(). If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). - + @param[in] TokenNumber The PCD token number to set a current value for. @param[in, out] SizeOfBuffer The size, in bytes, of Buffer. @param[in] Buffer A pointer to the buffer to set. @@ -564,16 +611,17 @@ LibPcdSetPtr ( ) { EFI_STATUS Status; + UINTN InputSizeOfBuffer; ASSERT (SizeOfBuffer != NULL); if (*SizeOfBuffer > 0) { ASSERT (Buffer != NULL); } - - Status = (GetPcdPpiPointer ())->SetPtr (TokenNumber, SizeOfBuffer, (VOID *) Buffer); - if (EFI_ERROR (Status)) { + InputSizeOfBuffer = *SizeOfBuffer; + Status = (GetPcdPpiPointer ())->SetPtr (TokenNumber, SizeOfBuffer, (VOID *) Buffer); + if (EFI_ERROR (Status) && (*SizeOfBuffer < InputSizeOfBuffer)) { return NULL; } @@ -584,14 +632,14 @@ LibPcdSetPtr ( /** This function provides a means by which to set a value for a given PCD token. - - Sets the Boolean value for the token specified by TokenNumber + + Sets the Boolean value for the token specified by TokenNumber to the value specified by Value. Value is returned. - + @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The boolean value to set. - @return Return the value been set. + @return Return the value that was set. **/ BOOLEAN @@ -601,11 +649,7 @@ LibPcdSetBool ( IN BOOLEAN Value ) { - EFI_STATUS Status; - - Status = (GetPcdPpiPointer ())->SetBool (TokenNumber, Value); - - ASSERT_EFI_ERROR (Status); + (GetPcdPpiPointer ())->SetBool (TokenNumber, Value); return Value; } @@ -614,18 +658,18 @@ LibPcdSetBool ( /** This function provides a means by which to set a value for a given PCD token. - - Sets the 8-bit value for the token specified by TokenNumber and + + Sets the 8-bit value for the token specified by TokenNumber and Guid to the value specified by Value. Value is returned. - + If Guid is NULL, then ASSERT(). - - @param[in] Guid Pointer to a 128-bit unique value that + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to set a value from. @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The 8-bit value to set. - @return Return the value been set. + @return Return the value that was set. **/ UINT8 @@ -636,13 +680,9 @@ LibPcdSetEx8 ( IN UINT8 Value ) { - EFI_STATUS Status; - ASSERT (Guid != NULL); - Status = (GetPcdPpiPointer ())->Set8Ex (Guid, TokenNumber, Value); - - ASSERT_EFI_ERROR (Status); + (GetPiPcdPpiPointer ())->Set8 (Guid, TokenNumber, Value); return Value; } @@ -651,18 +691,18 @@ LibPcdSetEx8 ( /** This function provides a means by which to set a value for a given PCD token. - - Sets the 16-bit value for the token specified by TokenNumber and + + Sets the 16-bit value for the token specified by TokenNumber and Guid to the value specified by Value. Value is returned. - + If Guid is NULL, then ASSERT(). - - @param[in] Guid Pointer to a 128-bit unique value that + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to set a value from. @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The 16-bit value to set. - @return Return the value been set. + @return Return the value that was set. **/ UINT16 @@ -673,11 +713,9 @@ LibPcdSetEx16 ( IN UINT16 Value ) { - EFI_STATUS Status; ASSERT (Guid != NULL); - Status = (GetPcdPpiPointer ())->Set16Ex (Guid, TokenNumber, Value); - ASSERT_EFI_ERROR (Status); + (GetPiPcdPpiPointer ())->Set16 (Guid, TokenNumber, Value); return Value; } @@ -686,18 +724,18 @@ LibPcdSetEx16 ( /** This function provides a means by which to set a value for a given PCD token. - - Sets the 32-bit value for the token specified by TokenNumber and + + Sets the 32-bit value for the token specified by TokenNumber and Guid to the value specified by Value. Value is returned. - + If Guid is NULL, then ASSERT(). - - @param[in] Guid Pointer to a 128-bit unique value that + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to set a value from. @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The 32-bit value to set. - @return Return the value been set. + @return Return the value that was set. **/ UINT32 @@ -708,13 +746,9 @@ LibPcdSetEx32 ( IN UINT32 Value ) { - EFI_STATUS Status; - ASSERT (Guid != NULL); - Status = (GetPcdPpiPointer ())->Set32Ex (Guid, TokenNumber, Value); - - ASSERT_EFI_ERROR (Status); + (GetPiPcdPpiPointer ())->Set32 (Guid, TokenNumber, Value); return Value; } @@ -723,17 +757,18 @@ LibPcdSetEx32 ( /** This function provides a means by which to set a value for a given PCD token. - - Sets the 64-bit value for the token specified by TokenNumber and + + Sets the 64-bit value for the token specified by TokenNumber and Guid to the value specified by Value. Value is returned. + If Guid is NULL, then ASSERT(). - - @param[in] Guid Pointer to a 128-bit unique value that + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to set a value from. @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The 64-bit value to set. - @return Return the value been set. + @return Return the value that was set. **/ UINT64 @@ -744,12 +779,9 @@ LibPcdSetEx64 ( IN UINT64 Value ) { - EFI_STATUS Status; ASSERT (Guid != NULL); - Status = (GetPcdPpiPointer ())->Set64Ex (Guid, TokenNumber, Value); - - ASSERT_EFI_ERROR (Status); + (GetPiPcdPpiPointer ())->Set64 (Guid, TokenNumber, Value); return Value; } @@ -758,18 +790,18 @@ LibPcdSetEx64 ( /** This function provides a means by which to set a value for a given PCD token. - - Sets a buffer for the token specified by TokenNumber to the value specified by - Buffer and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than - the maximum size support by TokenNumber, then set SizeOfBuffer to the maximum size - supported by TokenNumber and return NULL to indicate that the set operation - was not actually performed. - + + Sets a buffer for the token specified by TokenNumber to the value specified by + Buffer and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than + the maximum size support by TokenNumber, then set SizeOfBuffer to the maximum size + supported by TokenNumber and return NULL to indicate that the set operation + was not actually performed. + If Guid is NULL, then ASSERT(). If SizeOfBuffer is NULL, then ASSERT(). If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). - - @param[in] Guid Pointer to a 128-bit unique value that + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to set a value from. @param[in] TokenNumber The PCD token number to set a current value for. @param[in, out] SizeOfBuffer The size, in bytes, of Buffer. @@ -788,15 +820,17 @@ LibPcdSetExPtr ( ) { EFI_STATUS Status; + UINTN InputSizeOfBuffer; + ASSERT (SizeOfBuffer != NULL); if (*SizeOfBuffer > 0) { ASSERT (Buffer != NULL); } ASSERT (Guid != NULL); - Status = (GetPcdPpiPointer ())->SetPtrEx (Guid, TokenNumber, SizeOfBuffer, Buffer); - - if (EFI_ERROR (Status)) { + InputSizeOfBuffer = *SizeOfBuffer; + Status = (GetPiPcdPpiPointer ())->SetPtr (Guid, TokenNumber, SizeOfBuffer, Buffer); + if (EFI_ERROR (Status) && (*SizeOfBuffer < InputSizeOfBuffer)) { return NULL; } @@ -807,18 +841,18 @@ LibPcdSetExPtr ( /** This function provides a means by which to set a value for a given PCD token. - - Sets the Boolean value for the token specified by TokenNumber and + + Sets the Boolean value for the token specified by TokenNumber and Guid to the value specified by Value. Value is returned. - + If Guid is NULL, then ASSERT(). - - @param[in] Guid Pointer to a 128-bit unique value that + + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to set a value from. @param[in] TokenNumber The PCD token number to set a current value for. @param[in] Value The Boolean value to set. - @return Return the value been set. + @return Return the value that was set. **/ BOOLEAN @@ -829,31 +863,363 @@ LibPcdSetExBool ( IN BOOLEAN Value ) { - EFI_STATUS Status; - ASSERT (Guid != NULL); - Status = (GetPcdPpiPointer ())->SetBoolEx (Guid, TokenNumber, Value); - ASSERT_EFI_ERROR (Status); + (GetPiPcdPpiPointer ())->SetBool (Guid, TokenNumber, Value); return Value; } +#endif + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 8-bit value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 8-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSet8S ( + IN UINTN TokenNumber, + IN UINT8 Value + ) +{ + return (GetPcdPpiPointer ())->Set8 (TokenNumber, Value); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 16-bit value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 16-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSet16S ( + IN UINTN TokenNumber, + IN UINT16 Value + ) +{ + return (GetPcdPpiPointer ())->Set16 (TokenNumber, Value); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 32-bit value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 32-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSet32S ( + IN UINTN TokenNumber, + IN UINT32 Value + ) +{ + return (GetPcdPpiPointer ())->Set32 (TokenNumber, Value); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 64-bit value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 64-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSet64S ( + IN UINTN TokenNumber, + IN UINT64 Value + ) +{ + return (GetPcdPpiPointer ())->Set64 (TokenNumber, Value); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets a buffer for the token specified by TokenNumber to the value specified + by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size + support by TokenNumber, then set SizeOfBuffer to the maximum size supported by + TokenNumber and return EFI_INVALID_PARAMETER to indicate that the set operation + was not actually performed. + + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the + maximum size supported by TokenName and EFI_INVALID_PARAMETER must be returned. + + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in, out] SizeOfBuffer The size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetPtrS ( + IN UINTN TokenNumber, + IN OUT UINTN *SizeOfBuffer, + IN CONST VOID *Buffer + ) +{ + ASSERT (SizeOfBuffer != NULL); + + if (*SizeOfBuffer > 0) { + ASSERT (Buffer != NULL); + } + + return (GetPcdPpiPointer ())->SetPtr (TokenNumber, SizeOfBuffer, (VOID *) Buffer); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the boolean value for the token specified by TokenNumber + to the value specified by Value. + + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The boolean value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetBoolS ( + IN UINTN TokenNumber, + IN BOOLEAN Value + ) +{ + return (GetPcdPpiPointer ())->SetBool (TokenNumber, Value); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 8-bit value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 8-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetEx8S ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN UINT8 Value + ) +{ + ASSERT (Guid != NULL); + + return (GetPiPcdPpiPointer ())->Set8 (Guid, TokenNumber, Value); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 16-bit value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 16-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetEx16S ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN UINT16 Value + ) +{ + ASSERT (Guid != NULL); + + return (GetPiPcdPpiPointer ())->Set16 (Guid, TokenNumber, Value); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 32-bit value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 32-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetEx32S ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN UINT32 Value + ) +{ + ASSERT (Guid != NULL); + + return (GetPiPcdPpiPointer ())->Set32 (Guid, TokenNumber, Value); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the 64-bit value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The 64-bit value to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetEx64S ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN UINT64 Value + ) +{ + ASSERT (Guid != NULL); + + return (GetPiPcdPpiPointer ())->Set64 (Guid, TokenNumber, Value); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets a buffer for the token specified by TokenNumber to the value specified by + Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size + support by TokenNumber, then set SizeOfBuffer to the maximum size supported by + TokenNumber and return EFI_INVALID_PARAMETER to indicate that the set operation + was not actually performed. + + If Guid is NULL, then ASSERT(). + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[in] Guid Pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in, out] SizeOfBuffer The size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to set. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPcdSetExPtrS ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN OUT UINTN *SizeOfBuffer, + IN VOID *Buffer + ) +{ + ASSERT (Guid != NULL); + + ASSERT (SizeOfBuffer != NULL); + + if (*SizeOfBuffer > 0) { + ASSERT (Buffer != NULL); + } + + return (GetPiPcdPpiPointer ())->SetPtr (Guid, TokenNumber, SizeOfBuffer, Buffer); +} + +/** + This function provides a means by which to set a value for a given PCD token. + + Sets the boolean value for the token specified by TokenNumber + to the value specified by Value. + + If Guid is NULL, then ASSERT(). + + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + @param[in] TokenNumber The PCD token number to set a current value for. + @param[in] Value The boolean value to set. + + @return The status of the set operation. +**/ +RETURN_STATUS +EFIAPI +LibPcdSetExBoolS ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + IN BOOLEAN Value + ) +{ + ASSERT (Guid != NULL); + return (GetPiPcdPpiPointer ())->SetBool (Guid, TokenNumber, Value); +} /** Set up a notification function that is called when a specified token is set. - - When the token specified by TokenNumber and Guid is set, - then notification function specified by NotificationFunction is called. + + When the token specified by TokenNumber and Guid is set, + then notification function specified by NotificationFunction is called. If Guid is NULL, then the default token space is used. If NotificationFunction is NULL, then ASSERT(). - @param[in] Guid Pointer to a 128-bit unique value that designates which - namespace to set a value from. If NULL, then the default - token space is used. + @param[in] Guid The pointer to a 128-bit unique value that + designates which namespace to set a value from. + If NULL, then the default token space is used. @param[in] TokenNumber The PCD token number to monitor. - @param[in] NotificationFunction The function to call when the token + @param[in] NotificationFunction The function to call when the token specified by Guid and TokenNumber is set. **/ @@ -869,7 +1235,7 @@ LibPcdCallbackOnSet ( ASSERT (NotificationFunction != NULL); - Status = (GetPcdPpiPointer ())->CallbackOnSet (Guid, TokenNumber, NotificationFunction); + Status = (GetPiPcdPpiPointer ())->CallbackOnSet (Guid, TokenNumber, (EFI_PEI_PCD_PPI_CALLBACK) NotificationFunction); ASSERT_EFI_ERROR (Status); @@ -880,12 +1246,12 @@ LibPcdCallbackOnSet ( /** Disable a notification function that was established with LibPcdCallbackonSet(). - + Disable a notification function that was previously established with LibPcdCallbackOnSet(). If NotificationFunction is NULL, then ASSERT(). - If LibPcdCallbackOnSet() was not previously called with Guid, TokenNumber, + If LibPcdCallbackOnSet() was not previously called with Guid, TokenNumber, and NotificationFunction, then ASSERT(). - + @param[in] Guid Specify the GUID token space. @param[in] TokenNumber Specify the token number. @param[in] NotificationFunction The callback function to be unregistered. @@ -903,7 +1269,7 @@ LibPcdCancelCallback ( ASSERT (NotificationFunction != NULL); - Status = (GetPcdPpiPointer ())->CancelCallback (Guid, TokenNumber, NotificationFunction); + Status = (GetPiPcdPpiPointer ())->CancelCallback (Guid, TokenNumber, (EFI_PEI_PCD_PPI_CALLBACK) NotificationFunction); ASSERT_EFI_ERROR (Status); @@ -914,35 +1280,34 @@ LibPcdCancelCallback ( /** Retrieves the next token in a token space. - - Retrieves the next PCD token number from the token space specified by Guid. - If Guid is NULL, then the default token space is used. If TokenNumber is 0, - then the first token number is returned. Otherwise, the token number that - follows TokenNumber in the token space is returned. If TokenNumber is the last - token number in the token space, then 0 is returned. - + + Retrieves the next PCD token number from the token space specified by Guid. + If Guid is NULL, then the default token space is used. If TokenNumber is 0, + then the first token number is returned. Otherwise, the token number that + follows TokenNumber in the token space is returned. If TokenNumber is the last + token number in the token space, then 0 is returned. + If TokenNumber is not 0 and is not in the token space specified by Guid, then ASSERT(). - @param[in] Guid Pointer to a 128-bit unique value that designates which namespace + @param[in] Guid The pointer to a 128-bit unique value that designates which namespace to set a value from. If NULL, then the default token space is used. - @param[in] TokenNumber The previous PCD token number. If 0, then retrieves the first PCD + @param[in] TokenNumber The previous PCD token number. If 0, then retrieves the first PCD token number. @return The next valid token number. **/ -UINTN +UINTN EFIAPI LibPcdGetNextToken ( IN CONST GUID *Guid, OPTIONAL IN UINTN TokenNumber ) { - EFI_STATUS Status; - - Status = (GetPcdPpiPointer ())->GetNextToken (Guid, &TokenNumber); + EFI_STATUS Status; - ASSERT_EFI_ERROR (Status); + Status = (GetPiPcdPpiPointer ())->GetNextToken (Guid, &TokenNumber); + ASSERT (!EFI_ERROR (Status) || TokenNumber == 0); return TokenNumber; } @@ -950,13 +1315,13 @@ LibPcdGetNextToken ( /** Used to retrieve the list of available PCD token space GUIDs. - + Returns the PCD token space GUID that follows TokenSpaceGuid in the list of token spaces in the platform. If TokenSpaceGuid is NULL, then a pointer to the first PCD token spaces returned. If TokenSpaceGuid is the last PCD token space GUID in the list, then NULL is returned. - - @param TokenSpaceGuid Pointer to the a PCD token space GUID + + @param TokenSpaceGuid The pointer to the a PCD token space GUID @return The next valid token namespace. @@ -967,11 +1332,7 @@ LibPcdGetNextTokenSpace ( IN CONST GUID *TokenSpaceGuid ) { - EFI_STATUS Status; - - Status = (GetPcdPpiPointer ())->GetNextTokenSpace (&TokenSpaceGuid); - - ASSERT_EFI_ERROR (Status); + (GetPiPcdPpiPointer ())->GetNextTokenSpace (&TokenSpaceGuid); return (GUID *) TokenSpaceGuid; } @@ -980,31 +1341,31 @@ LibPcdGetNextTokenSpace ( /** Sets a value of a patchable PCD entry that is type pointer. - - Sets the PCD entry specified by PatchVariable to the value specified by Buffer - and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than - MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return - NULL to indicate that the set operation was not actually performed. - If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to + + Sets the PCD entry specified by PatchVariable to the value specified by Buffer + and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than + MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return + NULL to indicate that the set operation was not actually performed. + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to MaximumDatumSize and NULL must be returned. - + If PatchVariable is NULL, then ASSERT(). If SizeOfBuffer is NULL, then ASSERT(). If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). - @param[in] PatchVariable A pointer to the global variable in a module that is + @param[out] PatchVariable A pointer to the global variable in a module that is the target of the set operation. @param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable. @param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer. @param[in] Buffer A pointer to the buffer to used to set the target variable. - + @return Return the pointer to the buffer been set. **/ VOID * EFIAPI LibPatchPcdSetPtr ( - IN VOID *PatchVariable, + OUT VOID *PatchVariable, IN UINTN MaximumDatumSize, IN OUT UINTN *SizeOfBuffer, IN CONST VOID *Buffer @@ -1012,7 +1373,7 @@ LibPatchPcdSetPtr ( { ASSERT (PatchVariable != NULL); ASSERT (SizeOfBuffer != NULL); - + if (*SizeOfBuffer > 0) { ASSERT (Buffer != NULL); } @@ -1022,10 +1383,237 @@ LibPatchPcdSetPtr ( *SizeOfBuffer = MaximumDatumSize; return NULL; } - + CopyMem (PatchVariable, Buffer, *SizeOfBuffer); - + return (VOID *) Buffer; } +/** + Sets a value of a patchable PCD entry that is type pointer. + + Sets the PCD entry specified by PatchVariable to the value specified + by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize, + then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER + to indicate that the set operation was not actually performed. + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to + MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned. + + If PatchVariable is NULL, then ASSERT(). + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[out] PatchVariable A pointer to the global variable in a module that is + the target of the set operation. + @param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable. + @param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to used to set the target variable. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPatchPcdSetPtrS ( + OUT VOID *PatchVariable, + IN UINTN MaximumDatumSize, + IN OUT UINTN *SizeOfBuffer, + IN CONST VOID *Buffer + ) +{ + ASSERT (PatchVariable != NULL); + ASSERT (SizeOfBuffer != NULL); + if (*SizeOfBuffer > 0) { + ASSERT (Buffer != NULL); + } + + if ((*SizeOfBuffer > MaximumDatumSize) || + (*SizeOfBuffer == MAX_ADDRESS)) { + *SizeOfBuffer = MaximumDatumSize; + return RETURN_INVALID_PARAMETER; + } + + CopyMem (PatchVariable, Buffer, *SizeOfBuffer); + + return RETURN_SUCCESS; +} + + +/** + Sets a value and size of a patchable PCD entry that is type pointer. + + Sets the PCD entry specified by PatchVariable to the value specified by Buffer + and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than + MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return + NULL to indicate that the set operation was not actually performed. + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to + MaximumDatumSize and NULL must be returned. + + If PatchVariable is NULL, then ASSERT(). + If SizeOfPatchVariable is NULL, then ASSERT(). + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[out] PatchVariable A pointer to the global variable in a module that is + the target of the set operation. + @param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable. + @param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable. + @param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to used to set the target variable. + + @return Return the pointer to the buffer been set. + +**/ +VOID * +EFIAPI +LibPatchPcdSetPtrAndSize ( + OUT VOID *PatchVariable, + OUT UINTN *SizeOfPatchVariable, + IN UINTN MaximumDatumSize, + IN OUT UINTN *SizeOfBuffer, + IN CONST VOID *Buffer + ) +{ + ASSERT (PatchVariable != NULL); + ASSERT (SizeOfPatchVariable != NULL); + ASSERT (SizeOfBuffer != NULL); + + if (*SizeOfBuffer > 0) { + ASSERT (Buffer != NULL); + } + + if ((*SizeOfBuffer > MaximumDatumSize) || + (*SizeOfBuffer == MAX_ADDRESS)) { + *SizeOfBuffer = MaximumDatumSize; + return NULL; + } + + CopyMem (PatchVariable, Buffer, *SizeOfBuffer); + *SizeOfPatchVariable = *SizeOfBuffer; + + return (VOID *) Buffer; +} + +/** + Sets a value and size of a patchable PCD entry that is type pointer. + + Sets the PCD entry specified by PatchVariable to the value specified + by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize, + then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER + to indicate that the set operation was not actually performed. + If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to + MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned. + + If PatchVariable is NULL, then ASSERT(). + If SizeOfPatchVariable is NULL, then ASSERT(). + If SizeOfBuffer is NULL, then ASSERT(). + If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT(). + + @param[out] PatchVariable A pointer to the global variable in a module that is + the target of the set operation. + @param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable. + @param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable. + @param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer. + @param[in] Buffer A pointer to the buffer to used to set the target variable. + + @return The status of the set operation. + +**/ +RETURN_STATUS +EFIAPI +LibPatchPcdSetPtrAndSizeS ( + OUT VOID *PatchVariable, + OUT UINTN *SizeOfPatchVariable, + IN UINTN MaximumDatumSize, + IN OUT UINTN *SizeOfBuffer, + IN CONST VOID *Buffer + ) +{ + ASSERT (PatchVariable != NULL); + ASSERT (SizeOfPatchVariable != NULL); + ASSERT (SizeOfBuffer != NULL); + + if (*SizeOfBuffer > 0) { + ASSERT (Buffer != NULL); + } + + if ((*SizeOfBuffer > MaximumDatumSize) || + (*SizeOfBuffer == MAX_ADDRESS)) { + *SizeOfBuffer = MaximumDatumSize; + return RETURN_INVALID_PARAMETER; + } + + CopyMem (PatchVariable, Buffer, *SizeOfBuffer); + *SizeOfPatchVariable = *SizeOfBuffer; + + return RETURN_SUCCESS; +} + +/** + Retrieve additional information associated with a PCD token. + + This includes information such as the type of value the TokenNumber is associated with as well as possible + human readable name that is associated with the token. + + If TokenNumber is not in the default token space specified, then ASSERT(). + + @param[in] TokenNumber The PCD token number. + @param[out] PcdInfo The returned information associated with the requested TokenNumber. + The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName. +**/ +VOID +EFIAPI +LibPcdGetInfo ( + IN UINTN TokenNumber, + OUT PCD_INFO *PcdInfo + ) +{ + EFI_STATUS Status; + + Status = GetPcdInfoPpiPointer()->GetInfo (TokenNumber, (EFI_PCD_INFO *) PcdInfo); + ASSERT_EFI_ERROR (Status); +} + +/** + Retrieve additional information associated with a PCD token. + + This includes information such as the type of value the TokenNumber is associated with as well as possible + human readable name that is associated with the token. + + If TokenNumber is not in the token space specified by Guid, then ASSERT(). + + @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[out] PcdInfo The returned information associated with the requested TokenNumber. + The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName. +**/ +VOID +EFIAPI +LibPcdGetInfoEx ( + IN CONST GUID *Guid, + IN UINTN TokenNumber, + OUT PCD_INFO *PcdInfo + ) +{ + EFI_STATUS Status; + + Status = GetPiPcdInfoPpiPointer()->GetInfo (Guid, TokenNumber, (EFI_PCD_INFO *) PcdInfo); + ASSERT_EFI_ERROR (Status); +} + +/** + Retrieve the currently set SKU Id. + + @return The currently set SKU Id. If the platform has not set at a SKU Id, then the + default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU + Id is returned. +**/ +UINTN +EFIAPI +LibPcdGetSku ( + VOID + ) +{ + return GetPiPcdInfoPpiPointer()->GetSku (); +}