]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/PcdLib.h
map FeaturePcdGet(TokenName) to _PCD_GET_MODE_BOOL_##TokenName to follow the build...
[mirror_edk2.git] / MdePkg / Include / Library / PcdLib.h
index 6d543129cda8c38764a0ea68e4c12df7151a225d..4902d2b3de5e8eafe78b46eec312f440d9ffe4cd 100644 (file)
@@ -18,94 +18,91 @@ Module Name: PcdLib.h
 #ifndef __PCD_LIB_H__\r
 #define __PCD_LIB_H__\r
 \r
-#include <Common/Pcd.h>\r
+#define PCD_INVALID_TOKEN_NUMBER ((UINTN) 0)\r
 \r
-\r
-#define PcdToken(TokenName)  _PCD_TOKEN_##TokenName\r
+#define PcdToken(TokenName)                 _PCD_TOKEN_##TokenName\r
 \r
 \r
 //\r
 // Feature Flag is in the form of a global constant\r
 //\r
-#define FeaturePcdGet(TokenName)     _gPcd_FixedAtBuild_##TokenName\r
+#define FeaturePcdGet(TokenName)            _PCD_GET_MODE_BOOL_##TokenName\r
 \r
 \r
 //\r
 // Fixed is fixed at build time\r
 //\r
-#define FixedPcdGet8(TokenName)     _gPcd_FixedAtBuild_##TokenName\r
-#define FixedPcdGet16(TokenName)    _gPcd_FixedAtBuild_##TokenName\r
-#define FixedPcdGet32(TokenName)    _gPcd_FixedAtBuild_##TokenName\r
-#define FixedPcdGet64(TokenName)    _gPcd_FixedAtBuild_##TokenName\r
-#define FixedPcdGetBool(TokenName)  _gPcd_FixedAtBuild_##TokenName\r
+#define FixedPcdGet8(TokenName)             _PCD_VALUE_##TokenName\r
+#define FixedPcdGet16(TokenName)            _PCD_VALUE_##TokenName\r
+#define FixedPcdGet32(TokenName)            _PCD_VALUE_##TokenName\r
+#define FixedPcdGet64(TokenName)            _PCD_VALUE_##TokenName\r
+#define FixedPcdGetBool(TokenName)          _PCD_VALUE_##TokenName\r
 \r
 \r
-//\r
-// BugBug: This works for strings, but not constants.\r
-//\r
-#define FixedPcdGetPtr(TokenName)    ((VOID *)_gPcd_FixedAtBuild_##TokenName)\r
+#define FixedPcdGetPtr(TokenName)           ((VOID *)_PCD_VALUE_##TokenName)\r
 \r
 \r
 //\r
 // (Binary) Patch is in the form of a global variable\r
 //\r
-#define PatchPcdGet8(TokenName)     _gPcd_BinaryPatch_##TokenName\r
-#define PatchPcdGet16(TokenName)    _gPcd_BinaryPatch_##TokenName\r
-#define PatchPcdGet32(TokenName)    _gPcd_BinaryPatch_##TokenName\r
-#define PatchPcdGet64(TokenName)    _gPcd_BinaryPatch_##TokenName\r
-#define PatchPcdGetBool(TokenName)  _gPcd_BinaryPatch_##TokenName\r
-#define PatchPcdGetPtr(TokenName)   ((VOID *)_gPcd_BinaryPatch_##TokenName)\r
-\r
-#define PatchPcdSet8(TokenName, Value)     (_gPcd_BinaryPatch_##TokenName = Value)\r
-#define PatchPcdSet16(TokenName, Value)    (_gPcd_BinaryPatch_##TokenName = Value)\r
-#define PatchPcdSet32(TokenName, Value)    (_gPcd_BinaryPatch_##TokenName = Value)\r
-#define PatchPcdSet64(TokenName, Value)    (_gPcd_BinaryPatch_##TokenName = Value)\r
-#define PatchPcdSetBool(TokenName, Value)  (_gPcd_BinaryPatch_##TokenName = Value)\r
-#define PatchPcdSetPtr(TokenName, Value, Size)   CopyMem (_gPcd_BinaryPatch_##TokenName, Value, Size)\r
+#define PatchPcdGet8(TokenName)             _gPcd_BinaryPatch_##TokenName\r
+#define PatchPcdGet16(TokenName)            _gPcd_BinaryPatch_##TokenName\r
+#define PatchPcdGet32(TokenName)            _gPcd_BinaryPatch_##TokenName\r
+#define PatchPcdGet64(TokenName)            _gPcd_BinaryPatch_##TokenName\r
+#define PatchPcdGetBool(TokenName)          _gPcd_BinaryPatch_##TokenName\r
+#define PatchPcdGetPtr(TokenName)           ((VOID *)_gPcd_BinaryPatch_##TokenName)\r
+\r
+#define PatchPcdSet8(TokenName, Value)      (_gPcd_BinaryPatch_##TokenName = (Value))\r
+#define PatchPcdSet16(TokenName, Value)     (_gPcd_BinaryPatch_##TokenName = (Value))\r
+#define PatchPcdSet32(TokenName, Value)     (_gPcd_BinaryPatch_##TokenName = (Value))\r
+#define PatchPcdSet64(TokenName, Value)     (_gPcd_BinaryPatch_##TokenName = (Value))\r
+#define PatchPcdSetBool(TokenName, Value)   (_gPcd_BinaryPatch_##TokenName = (Value))\r
+#define PatchPcdSetPtr(TokenName, Size, Buffer) \\r
+                                            CopyMem (_gPcd_BinaryPatch_##TokenName, (Buffer), (Size))\r
 \r
 //\r
 // Dynamic is via the protocol with only the TokenNumber as argument\r
 //  It can also be Patch or Fixed type based on a build option\r
 //\r
-#define PcdGet8(TokenName)          _PCD_MODE_8_##TokenName\r
-#define PcdGet16(TokenName)         _PCD_MODE_16_##TokenName\r
-#define PcdGet32(TokenName)         _PCD_MODE_32_##TokenName\r
-#define PcdGet64(TokenName)         _PCD_MODE_64_##TokenName\r
-#define PcdGetPtr(TokenName)        _PCD_MODE_PTR_##TokenName\r
-#define PcdGetBool(TokenName)       _PCD_MODE_BOOL_##TokenName\r
-\r
+#define PcdGet8(TokenName)                  _PCD_GET_MODE_8_##TokenName\r
+#define PcdGet16(TokenName)                 _PCD_GET_MODE_16_##TokenName\r
+#define PcdGet32(TokenName)                 _PCD_GET_MODE_32_##TokenName\r
+#define PcdGet64(TokenName)                 _PCD_GET_MODE_64_##TokenName\r
+#define PcdGetPtr(TokenName)                _PCD_GET_MODE_PTR_##TokenName\r
+#define PcdGetBool(TokenName)               _PCD_GET_MODE_BOOL_##TokenName\r
 \r
 //\r
-// Dynamic Ex is to support binary distribution\r
+// Dynamic Set\r
 //\r
-#define PcdGetEx8(Guid, TokenName)     LibPcdGetEx8 (Guid, _PCD_TOKEN_##TokenName)\r
-#define PcdGetEx16(Guid, TokenName)    LibPcdGetEx16 (Guid, _PCD_TOKEN_##TokenName)\r
-#define PcdGetEx32(Guid, TokenName)    LibPcdGetEx32 (Guid, _PCD_TOKEN_##TokenName)\r
-#define PcdGetEx64(Guid, TokenName)    LibPcdGetEx64 (Guid, _PCD_TOKEN_##TokenName)\r
-#define PcdGetExPtr(Guid, TokenName)   LibPcdGetExPtr (Guid, _PCD_TOKEN_##TokenName)\r
-#define PcdGetExBool(Guid, TokenName)  LibPcdGetExBool (Guid, _PCD_TOKEN_##TokenName)\r
-\r
+#define PcdSet8(TokenName, Value)           _PCD_SET_MODE_8_##TokenName     ((Value))\r
+#define PcdSet16(TokenName, Value)          _PCD_SET_MODE_16_##TokenName    ((Value))\r
+#define PcdSet32(TokenName, Value)          _PCD_SET_MODE_32_##TokenName    ((Value))\r
+#define PcdSet64(TokenName, Value)          _PCD_SET_MODE_64_##TokenName    ((Value))\r
+#define PcdSetPtr(TokenName, SizeOfBuffer, Buffer) \\r
+                                            _PCD_SET_MODE_PTR_##TokenName   ((SizeOfBuffer), (Buffer))\r
+#define PcdSetBool(TokenName, Value)        _PCD_SET_MODE_BOOL_##TokenName  ((Value))\r
 \r
 //\r
-// Dynamic Set\r
+// Dynamic Ex is to support binary distribution\r
 //\r
-#define PcdSet8(TokenName, Value)       LibPcdSet8   (_PCD_TOKEN_##TokenName, Value)\r
-#define PcdSet16(TokenName, Value)      LibPcdSet16  (_PCD_TOKEN_##TokenName, Value)\r
-#define PcdSet32(TokenName, Value)      LibPcdSet32  (_PCD_TOKEN_##TokenName, Value)\r
-#define PcdSet64(TokenName, Value)      LibPcdSet64  (_PCD_TOKEN_##TokenName, Value)\r
-#define PcdSetPtr(TokenName, Value)     LibPcdSetPtr (_PCD_TOKEN_##TokenName, Value)\r
-#define PcdSetBool(TokenName, Value)    LibPcdSetBool(_PCD_TOKEN_##TokenName, Value)\r
-\r
+#define PcdGetEx8(Guid, TokenName)          LibPcdGetEx8    ((Guid), _PCD_TOKEN_##TokenName)\r
+#define PcdGetEx16(Guid, TokenName)         LibPcdGetEx16   ((Guid), _PCD_TOKEN_##TokenName)\r
+#define PcdGetEx32(Guid, TokenName)         LibPcdGetEx32   ((Guid), _PCD_TOKEN_##TokenName)\r
+#define PcdGetEx64(Guid, TokenName)         LibPcdGetEx64   ((Guid), _PCD_TOKEN_##TokenName)\r
+#define PcdGetExPtr(Guid, TokenName)        LibPcdGetExPtr  ((Guid), _PCD_TOKEN_##TokenName)\r
+#define PcdGetExBool(Guid, TokenName)       LibPcdGetExBool ((Guid), _PCD_TOKEN_##TokenName)\r
 \r
 //\r
 // Dynamic Set Ex\r
 //\r
-#define PcdSetEx8(Guid, TokenName, Value)      LibPcdSetEx8   (Guid, _PCD_TOKEN_##TokenName, Value)\r
-#define PcdSetEx16(Guid, TokenName, Value)     LibPcdSetEx16  (Guid, _PCD_TOKEN_##TokenName, Value)\r
-#define PcdSetEx32(Guid, TokenName, Value)     LibPcdSetEx32  (Guid, _PCD_TOKEN_##TokenName, Value)\r
-#define PcdSetEx64(Guid, TokenName, Value)     LibPcdSetEx64  (Guid, _PCD_TOKEN_##TokenName, Value)\r
-#define PcdSetExPtr(Guid, TokenName, Value)    LibPcdSetExPtr (Guid, _PCD_TOKEN_##TokenName, Value)\r
-#define PcdSetExBool(Guid, TokenName, Value)   LibPcdSetExBool(Guid, _PCD_TOKEN_##TokenName, Value)\r
+#define PcdSetEx8(Guid, TokenName, Value)   LibPcdSetEx8   ((Guid), _PCD_TOKEN_##TokenName, (Value))\r
+#define PcdSetEx16(Guid, TokenName, Value)  LibPcdSetEx16  ((Guid), _PCD_TOKEN_##TokenName, (Value))\r
+#define PcdSetEx32(Guid, TokenName, Value)  LibPcdSetEx32  ((Guid), _PCD_TOKEN_##TokenName, (Value))\r
+#define PcdSetEx64(Guid, TokenName, Value)  LibPcdSetEx64  ((Guid), _PCD_TOKEN_##TokenName, (Value))\r
+#define PcdSetExPtr(Guid, TokenName, SizeOfBuffer, Buffer) \\r
+                                            LibPcdSetExPtr ((Guid), _PCD_TOKEN_##TokenName, (SizeOfBuffer), (Buffer))\r
+#define PcdSetExBool(Guid, TokenName, Value) \\r
+                                            LibPcdSetExBool((Guid), _PCD_TOKEN_##TokenName, (Value))\r
 \r
 \r
 /**\r
@@ -117,10 +114,10 @@ Module Name: PcdLib.h
   @retval SKU_ID Return the SKU ID that just be set.\r
 \r
 **/\r
-SKU_ID\r
+UINTN\r
 EFIAPI\r
 LibPcdSetSku (\r
-  IN SKU_ID   SkuId\r
+  IN UINTN   SkuId\r
   );\r
 \r
 \r
@@ -135,7 +132,7 @@ LibPcdSetSku (
 UINT8\r
 EFIAPI\r
 LibPcdGet8 (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -150,7 +147,7 @@ LibPcdGet8 (
 UINT16\r
 EFIAPI\r
 LibPcdGet16 (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -165,7 +162,7 @@ LibPcdGet16 (
 UINT32\r
 EFIAPI\r
 LibPcdGet32 (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -180,7 +177,7 @@ LibPcdGet32 (
 UINT64\r
 EFIAPI\r
 LibPcdGet64 (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -195,7 +192,7 @@ LibPcdGet64 (
 VOID *\r
 EFIAPI\r
 LibPcdGetPtr (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -210,7 +207,7 @@ LibPcdGetPtr (
 BOOLEAN \r
 EFIAPI\r
 LibPcdGetBool (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -225,7 +222,7 @@ LibPcdGetBool (
 UINTN\r
 EFIAPI\r
 LibPcdGetSize (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -244,7 +241,7 @@ UINT8
 EFIAPI\r
 LibPcdGetEx8 (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -263,7 +260,7 @@ UINT16
 EFIAPI\r
 LibPcdGetEx16 (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -282,7 +279,7 @@ UINT32
 EFIAPI\r
 LibPcdGetEx32 (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -301,7 +298,7 @@ UINT64
 EFIAPI\r
 LibPcdGetEx64 (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -320,7 +317,7 @@ VOID *
 EFIAPI\r
 LibPcdGetExPtr (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -339,7 +336,7 @@ BOOLEAN
 EFIAPI\r
 LibPcdGetExBool (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -358,7 +355,7 @@ UINTN
 EFIAPI\r
 LibPcdGetExSize (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber\r
+  IN UINTN             TokenNumber\r
   );\r
 \r
 \r
@@ -375,7 +372,7 @@ LibPcdGetExSize (
 UINT8\r
 EFIAPI\r
 LibPcdSet8 (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT8             Value\r
   );\r
 \r
@@ -393,7 +390,7 @@ LibPcdSet8 (
 UINT16\r
 EFIAPI\r
 LibPcdSet16 (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT16            Value\r
   );\r
 \r
@@ -411,7 +408,7 @@ LibPcdSet16 (
 UINT32\r
 EFIAPI\r
 LibPcdSet32 (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT32            Value\r
   );\r
 \r
@@ -429,17 +426,26 @@ LibPcdSet32 (
 UINT64\r
 EFIAPI\r
 LibPcdSet64 (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT64            Value\r
   );\r
 \r
 \r
 /**\r
-  Sets a buffer for the token specified by TokenNumber to \r
-  the value specified by Value.     Value is returned.\r
-  If Value is NULL, then ASSERT().\r
+  Sets a buffer for the token specified by TokenNumber to the value \r
+  specified by Buffer and SizeOfValue.  Buffer is returned.  \r
+  If SizeOfValue is greater than the maximum size support by TokenNumber, \r
+  then set SizeOfValue to the maximum size supported by TokenNumber and \r
+  return NULL to indicate that the set operation was not actually performed.  \r
+\r
+  If SizeOfValue is set to MAX_ADDRESS, then SizeOfValue must be set to the \r
+  maximum size supported by TokenName and NULL must be returned.\r
+  \r
+  If SizeOfValue is NULL, then ASSERT().\r
+  If SizeOfValue > 0 and Buffer is NULL, then ASSERT().\r
   \r
   @param[in]  TokenNumber The PCD token number to set a current value for.\r
+  @param[in,out] SizeOfBuffer The size, in bytes, of Buffer.\r
   @param[in]  Value A pointer to the buffer to set.\r
 \r
   @retval VOID* Return the pointer for the buffer been set.\r
@@ -448,9 +454,9 @@ LibPcdSet64 (
 VOID*\r
 EFIAPI\r
 LibPcdSetPtr (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
-  IN UINTN             SizeOfBuffer,\r
-  IN VOID              *Value\r
+  IN      UINTN             TokenNumber,\r
+  IN OUT  UINTN             *SizeOfBuffer,\r
+  IN      VOID              *Value\r
   );\r
 \r
 \r
@@ -467,7 +473,7 @@ LibPcdSetPtr (
 BOOLEAN\r
 EFIAPI\r
 LibPcdSetBool (\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN BOOLEAN           Value\r
   );\r
 \r
@@ -489,7 +495,7 @@ UINT8
 EFIAPI\r
 LibPcdSetEx8 (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT8             Value\r
   );\r
 \r
@@ -511,7 +517,7 @@ UINT16
 EFIAPI\r
 LibPcdSetEx16 (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT16            Value\r
   );\r
 \r
@@ -533,7 +539,7 @@ UINT32
 EFIAPI\r
 LibPcdSetEx32 (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT32            Value\r
   );\r
 \r
@@ -555,32 +561,38 @@ UINT64
 EFIAPI\r
 LibPcdSetEx64 (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN UINT64            Value\r
   );\r
 \r
 \r
 /**\r
-  Sets a buffer for the token specified by TokenNumber and \r
-  Guid to the value specified by Value. Value is returned.\r
+  Sets a buffer for the token specified by TokenNumber to the value specified by \r
+  Buffer and SizeOfValue.  Buffer is returned.  If SizeOfValue is greater than \r
+  the maximum size support by TokenNumber, then set SizeOfValue to the maximum size \r
+  supported by TokenNumber and return NULL to indicate that the set operation \r
+  was not actually performed. \r
+  \r
   If Guid is NULL, then ASSERT().\r
-  If Value is NULL, then ASSERT().\r
+  If SizeOfValue is NULL, then ASSERT().\r
+  If SizeOfValue > 0 and Buffer is NULL, then ASSERT().\r
   \r
   @param[in]  Guid Pointer to a 128-bit unique value that \r
               designates which namespace to set a value from.\r
   @param[in]  TokenNumber The PCD token number to set a current value for.\r
-  @param[in]  Value The 8-bit value to set.\r
+  @param[in, out] SizeOfBuffer The size, in bytes, of Buffer.\r
+  @param[in]  Buffer A pointer to the buffer to set.\r
 \r
-  @retval VOID * Return the value been set.\r
+  @retval VOID * Return the pinter to the buffer been set.\r
 \r
 **/\r
 VOID *\r
 EFIAPI\r
 LibPcdSetExPtr (\r
-  IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
-  IN UINTN             SizeOfBuffer,\r
-  IN VOID              *Value\r
+  IN      CONST GUID        *Guid,\r
+  IN      UINTN             TokenNumber,\r
+  IN OUT  UINTN             *SizeOfBuffer,\r
+  IN      VOID              *Buffer\r
   );\r
 \r
 \r
@@ -601,7 +613,7 @@ BOOLEAN
 EFIAPI\r
 LibPcdSetExBool (\r
   IN CONST GUID        *Guid,\r
-  IN PCD_TOKEN_NUMBER  TokenNumber,\r
+  IN UINTN             TokenNumber,\r
   IN BOOLEAN           Value\r
   );\r
 \r
@@ -624,7 +636,7 @@ typedef
 VOID\r
 (EFIAPI *PCD_CALLBACK) (\r
   IN        CONST GUID        *CallBackGuid, OPTIONAL\r
-  IN        PCD_TOKEN_NUMBER  CallBackToken,\r
+  IN        UINTN             CallBackToken,\r
   IN  OUT   VOID              *TokenData,\r
   IN        UINTN             TokenDataSize\r
   );\r
@@ -650,7 +662,7 @@ VOID
 EFIAPI\r
 LibPcdCallbackOnSet (\r
   IN CONST GUID               *Guid,       OPTIONAL\r
-  IN PCD_TOKEN_NUMBER         TokenNumber,\r
+  IN UINTN                    TokenNumber,\r
   IN PCD_CALLBACK             NotificationFunction\r
   );\r
 \r
@@ -669,7 +681,7 @@ VOID
 EFIAPI\r
 LibPcdCancelCallback (\r
   IN CONST GUID               *Guid,       OPTIONAL\r
-  IN PCD_TOKEN_NUMBER         TokenNumber,\r
+  IN UINTN                    TokenNumber,\r
   IN PCD_CALLBACK             NotificationFunction\r
   );\r
 \r
@@ -687,14 +699,68 @@ LibPcdCancelCallback (
   @param[in]  The previous PCD token number.  If 0, then retrieves the first PCD \r
               token number.\r
 \r
-  @retval PCD_TOKEN_NUMBER The next valid token number.\r
+  @retval UINTN            The next valid token number.\r
 \r
 **/\r
-PCD_TOKEN_NUMBER\r
+UINTN           \r
 EFIAPI\r
 LibPcdGetNextToken (\r
   IN CONST GUID               *Guid,       OPTIONAL\r
-  IN PCD_TOKEN_NUMBER         TokenNumber\r
+  IN UINTN                    TokenNumber\r
+  );\r
+\r
+\r
+\r
+/**\r
+  Retrieves the next PCD token space from a token space specified by Guid.\r
+  Guid of NULL is reserved to mark the default local token namespace on the current\r
+  platform. If Guid is NULL, then the GUID of the first non-local token space of the \r
+  current platform is returned. If Guid is the last non-local token space, \r
+  then NULL is returned. \r
+\r
+  If Guid is not NULL and is not a valid token space in the current platform, then ASSERT().\r
+\r
+\r
+  \r
+  @param[in]  Guid Pointer to a 128-bit unique value that designates from which namespace \r
+              to start the search.\r
+\r
+  @retval CONST GUID *  The next valid token namespace.\r
+\r
+**/\r
+GUID *           \r
+EFIAPI\r
+LibPcdGetNextTokenSpace (\r
+  IN CONST GUID  *Guid\r
+  );\r
+\r
+\r
+/**\r
+  Sets the PCD entry specified by PatchVariable to the value specified by Buffer \r
+  and SizeOfValue.  Buffer is returned.  If SizeOfValue is greater than \r
+  MaximumDatumSize, then set SizeOfValue to MaximumDatumSize and return \r
+  NULL to indicate that the set operation was not actually performed.  \r
+  If SizeOfValue is set to MAX_ADDRESS, then SizeOfValue must be set to \r
+  MaximumDatumSize and NULL must be returned.\r
+  \r
+  If PatchVariable is NULL, then ASSERT().\r
+  If SizeOfValue is NULL, then ASSERT().\r
+  If SizeOfValue > 0 and Buffer is NULL, then ASSERT().\r
+\r
+  @param[in] PatchVariable      A pointer to the global variable in a module that is \r
+                                the target of the set operation.\r
+  @param[in] MaximumDatumSize   The maximum size allowed for the PCD entry specified by PatchVariable.\r
+  @param[in, out] SizeOfBuffer  A pointer to the size, in bytes, of Buffer.\r
+  @param[in] Buffer             A pointer to the buffer to used to set the target variable.\r
+\r
+**/\r
+VOID *\r
+EFIAPI\r
+LibPatchPcdSetPtr (\r
+  IN        VOID        *PatchVariable,\r
+  IN        UINTN       MaximumDatumSize,\r
+  IN OUT    UINTN       *SizeOfBuffer,\r
+  IN CONST  VOID        *Buffer\r
   );\r
 \r
 #endif\r