#ifndef __PCD_LIB_H__\r
#define __PCD_LIB_H__\r
\r
+#define PCD_INVALID_TOKEN_NUMBER ((UINTN) -1)\r
\r
#define PcdToken(TokenName) _PCD_TOKEN_##TokenName\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_VALUE_##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
#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) CopyMem (_gPcd_BinaryPatch_##TokenName, Buffer, Size)\r
\r
//\r
// Dynamic is via the protocol with only the TokenNumber as argument\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 PcdSetPtr(TokenName, SizeOfBuffer, Buffer) LibPcdSetPtr (_PCD_TOKEN_##TokenName, SizeOfBuffer, Buffer)\r
#define PcdSetBool(TokenName, Value) LibPcdSetBool(_PCD_TOKEN_##TokenName, Value)\r
\r
\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 PcdSetExPtr(Guid, TokenName, SizeOfBuffer, Buffer) LibPcdSetExPtr (Guid, _PCD_TOKEN_##TokenName, SizeOfBuffer, Buffer)\r
#define PcdSetExBool(Guid, TokenName, Value) LibPcdSetExBool(Guid, _PCD_TOKEN_##TokenName, Value)\r
\r
\r
@param[in] SkuId The SKU value that will be used when the PCD service will retrieve and \r
set values associated with a PCD token.\r
\r
- @retval UINTN Return the SKU ID that just be set.\r
+ @retval SKU_ID Return the SKU ID that just be set.\r
\r
**/\r
UINTN\r
UINT8\r
EFIAPI\r
LibPcdGet8 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
);\r
\r
\r
UINT16\r
EFIAPI\r
LibPcdGet16 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
);\r
\r
\r
UINT32\r
EFIAPI\r
LibPcdGet32 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
);\r
\r
\r
UINT64\r
EFIAPI\r
LibPcdGet64 (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
);\r
\r
\r
VOID *\r
EFIAPI\r
LibPcdGetPtr (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
);\r
\r
\r
BOOLEAN \r
EFIAPI\r
LibPcdGetBool (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
);\r
\r
\r
UINTN\r
EFIAPI\r
LibPcdGetSize (\r
- IN UINTN TokenNumber\r
+ IN UINTN TokenNumber\r
);\r
\r
\r
EFIAPI\r
LibPcdSetPtr (\r
IN UINTN TokenNumber,\r
- IN CONST VOID *Value\r
+ IN UINTN SizeOfBuffer,\r
+ IN VOID *Value\r
);\r
\r
\r
LibPcdSetExPtr (\r
IN CONST GUID *Guid,\r
IN UINTN TokenNumber,\r
- IN CONST VOID *Value\r
+ IN UINTN SizeOfBuffer,\r
+ IN VOID *Value\r
);\r
\r
\r
typedef\r
VOID\r
(EFIAPI *PCD_CALLBACK) (\r
- IN CONST GUID *CallBackGuid, OPTIONAL\r
- IN UINTN CallBackToken,\r
- IN VOID *TokenData,\r
- IN UINTN TokenDataSize\r
+ IN CONST GUID *CallBackGuid, OPTIONAL\r
+ IN UINTN CallBackToken,\r
+ IN OUT VOID *TokenData,\r
+ IN UINTN TokenDataSize\r
);\r
\r
\r
@param[in] The previous PCD token number. If 0, then retrieves the first PCD \r
token number.\r
\r
- @retval UINTN The next valid token number.\r
+ @retval UINTN The next valid token number.\r
\r
**/\r
-UINTN\r
+UINTN \r
EFIAPI\r
LibPcdGetNextToken (\r
IN CONST GUID *Guid, OPTIONAL\r
- IN UINTN *TokenNumber\r
+ IN UINTN TokenNumber\r
);\r
\r
#endif\r