]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Library/PcdLib.h
Updated headers to follow coding standard
[mirror_edk2.git] / MdePkg / Include / Library / PcdLib.h
index 5858cfc475bfead410f6cf1caf563bfe017fc143..2b9c76796b79050c9425957b6b7a864d3d44c3ad 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
 PCD Library Class Interface Declarations\r
 \r
-Copyright (c) 2006, Intel Corporation                                                         \r
+Copyright (c) 2006 - 2007, Intel Corporation                                                         \r
 All rights reserved. This program and the accompanying materials                          \r
 are licensed and made available under the terms and conditions of the BSD License         \r
 which accompanies this distribution.  The full text of the license may be found at        \r
@@ -10,9 +10,6 @@ http://opensource.org/licenses/bsd-license.php
 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
 \r
-\r
-Module Name: PcdLib.h\r
-\r
 **/\r
 \r
 #ifndef __PCD_LIB_H__\r
@@ -26,7 +23,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 +36,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 +55,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 +434,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
@@ -460,7 +458,7 @@ EFIAPI
 LibPcdSetPtr (\r
   IN      UINTN             TokenNumber,\r
   IN OUT  UINTN             *SizeOfBuffer,\r
-  IN      VOID              *Value\r
+  IN      VOID              *Buffer\r
   );\r
 \r
 \r
@@ -577,6 +575,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 +626,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 +732,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