]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/PcdLib.h
Put the our jar files before the system's CLASSPATH
[mirror_edk2.git] / MdePkg / Include / Library / PcdLib.h
index 5858cfc475bfead410f6cf1caf563bfe017fc143..038443b993c9dcbe0a30a92449fc2c80edc2c1ef 100644 (file)
@@ -26,7 +26,7 @@ Module Name: PcdLib.h
 //\r
 // Feature Flag is in the form of a global constant\r
 //\r
-#define FeaturePcdGet(TokenName)            _PCD_VALUE_##TokenName\r
+#define FeaturePcdGet(TokenName)            _PCD_GET_MODE_BOOL_##TokenName\r
 \r
 \r
 //\r
@@ -39,9 +39,6 @@ Module Name: PcdLib.h
 #define FixedPcdGetBool(TokenName)          _PCD_VALUE_##TokenName\r
 \r
 \r
-//\r
-// BugBug: This works for strings, but not constants.\r
-//\r
 #define FixedPcdGetPtr(TokenName)           ((VOID *)_PCD_VALUE_##TokenName)\r
 \r
 \r
@@ -61,7 +58,12 @@ Module Name: PcdLib.h
 #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
+                                            LibPatchPcdSetPtr (                        \\r
+                                              _gPcd_BinaryPatch_##TokenName,           \\r
+                                              (UINTN)_PCD_PATCHABLE_##TokenName##_SIZE, \\r
+                                              (Size),                                  \\r
+                                              (Buffer)                                 \\r
+                                              )\r
 \r
 //\r
 // Dynamic is via the protocol with only the TokenNumber as argument\r
@@ -435,17 +437,16 @@ LibPcdSet64 (
 \r
 \r
 /**\r
-  Sets a buffer for the token specified by TokenNumber to \r
-  the value specified by Buffer and SizeOfValue.  Buffer to\r
-  be set is returned. The content of the buffer could be \r
-  overwritten if a Callback on SET is registered with this\r
-  TokenNumber.\r
-  \r
-  If SizeOfValue is greater than the maximum \r
-  size support by TokenNumber, then set SizeOfValue to the \r
-  maximum size supported by TokenNumber and return NULL to \r
-  indicate that the set operation was not actually performed. \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
@@ -577,6 +578,8 @@ LibPcdSetEx64 (
   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 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
@@ -626,9 +629,17 @@ LibPcdSetExBool (
   If Guid is NULL, then the default token space is used. \r
   If NotificationFunction is NULL, then ASSERT().\r
 \r
+  This notification function serves two purposes. Firstly, it notifies the module which \r
+  did the registration that the value of this PCD token has been set. Secondly, \r
+  it provides a mechanism for the module which did the registration to intercept \r
+  the set operation and override the value been set if necessary. After the invocation \r
+  of the callback function, TokenData will be used by PCD service PEIM or driver to \r
+  modify the internal data in PCD database. \r
+\r
+\r
   @param[in]  CallBackGuid The PCD token GUID being set.\r
   @param[in]  CallBackToken The PCD token number being set.\r
-  @param[in]  TokenData A pointer to the token data being set.\r
+  @param[in, out]  TokenData A pointer to the token data being set.\r
   @param[in]  TokenDataSize The size, in bytes, of the data being set.\r
 \r
   @retval VOID\r
@@ -724,17 +735,45 @@ LibPcdGetNextToken (
 \r
 \r
   \r
-  @param[in]  Pointer to a 128-bit unique value that designates from which namespace \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
-\r
-CONST GUID*           \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