The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/edk2/Include/Library/PcdLib.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /** @file
    2   Provides library services to get and set Platform Configuration Database entries.
    3 
    4   PCD Library Class provides a PCD usage macro interface for all PCD types.
    5   It should be included in any module that uses PCD. If a module uses dynamic/dynamicex
    6   PCD, module should be linked to a PEIM/DXE library instance to access that PCD.
    7   If a module uses PatchableInModule type PCD, it also needs the library instance to produce
    8   LibPatchPcdSetPtr() interface. For FeatureFlag/Fixed PCD, the macro interface is
    9   translated to a variable or macro that is auto-generated by build tool in
   10   module's autogen.h/autogen.c.
   11   The PcdGetXX(), PcdSetXX(), PcdToken(), and PcdGetNextTokenSpace() operations are
   12   only available prior to ExitBootServices().  If access to PCD values are required
   13   at runtime, then their values must be collected prior to ExitBootServices().
   14   There are no restrictions on the use of FeaturePcd(), FixedPcdGetXX(),
   15   PatchPcdGetXX(), and PatchPcdSetXX().
   16 
   17 Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
   18 SPDX-License-Identifier: BSD-2-Clause-Patent
   19 
   20 **/
   21 
   22 #ifndef __PCD_LIB_H__
   23 #define __PCD_LIB_H__
   24 
   25 
   26 /**
   27   Retrieves a token number based on a token name.
   28 
   29   Returns the token number associated with the PCD token specified by TokenName.
   30   If TokenName is not a valid token in the token space, then the module will not build.
   31 
   32   @param   TokenName  The name of the PCD token to retrieve the token number for.
   33 
   34   @return  The token number associated with the PCD.
   35 
   36 **/
   37 #define PcdToken(TokenName)                 _PCD_TOKEN_##TokenName
   38 
   39 
   40 /**
   41   Retrieves a Boolean PCD feature flag based on a token name.
   42 
   43   Returns the Boolean value for the PCD feature flag specified by TokenName.
   44   If TokenName is not a valid token in the token space, then the module will not build.
   45   If TokenName is not a feature flag PCD, then the module will not build.
   46 
   47   @param   TokenName  The name of the PCD token to retrieve a current value for.
   48 
   49   @return  Boolean value for the PCD feature flag.
   50 
   51 **/
   52 #define FeaturePcdGet(TokenName)            _PCD_GET_MODE_BOOL_##TokenName
   53 
   54 
   55 /**
   56   Retrieves an 8-bit fixed PCD token value based on a token name.
   57 
   58   Returns the 8-bit value for the token specified by TokenName.
   59   If TokenName is not a valid token in the token space, then the module will not build.
   60   If TokenName is not a fixed at build PCD, then the module will not build.
   61 
   62   @param   TokenName  The name of the PCD token to retrieve a current value for.
   63 
   64   @return  8-bit value for the token specified by TokenName.
   65 
   66 **/
   67 #define FixedPcdGet8(TokenName)             _PCD_VALUE_##TokenName
   68 
   69 
   70 /**
   71   Retrieves a 16-bit fixed PCD token value based on a token name.
   72 
   73   Returns the 16-bit value for the token specified by TokenName.
   74   If TokenName is not a valid token in the token space, then the module will not build.
   75   If TokenName is not a fixed at build PCD, then the module will not build.
   76 
   77   @param   TokenName  The name of the PCD token to retrieve a current value for.
   78 
   79   @return  16-bit value for the token specified by TokenName.
   80 
   81 **/
   82 #define FixedPcdGet16(TokenName)            _PCD_VALUE_##TokenName
   83 
   84 
   85 /**
   86   Retrieves a 32-bit fixed PCD token value based on a token name.
   87 
   88   Returns the 32-bit value for the token specified by TokenName.
   89   If TokenName is not a valid token in the token space, then the module will not build.
   90   If TokenName is not a fixed at build PCD, then the module will not build.
   91 
   92   @param   TokenName  The name of the PCD token to retrieve a current value for.
   93 
   94   @return  32-bit value for the token specified by TokenName.
   95 
   96 **/
   97 #define FixedPcdGet32(TokenName)            _PCD_VALUE_##TokenName
   98 
   99 
  100 /**
  101   Retrieves a 64-bit fixed PCD token value based on a token name.
  102 
  103   Returns the 64-bit value for the token specified by TokenName.
  104   If TokenName is not a valid token in the token space, then the module will not build.
  105   If TokenName is not a fixed at build PCD, then the module will not build.
  106 
  107   @param   TokenName  The name of the PCD token to retrieve a current value for.
  108 
  109   @return  64-bit value for the token specified by TokenName.
  110 
  111 **/
  112 #define FixedPcdGet64(TokenName)            _PCD_VALUE_##TokenName
  113 
  114 
  115 /**
  116   Retrieves a Boolean fixed PCD token value based on a token name.
  117 
  118   Returns the Boolean value for the token specified by TokenName.
  119   If TokenName is not a valid token in the token space, then the module will not build.
  120   If TokenName is not a fixed at build PCD, then the module will not build.
  121 
  122   @param   TokenName  The name of the PCD token to retrieve a current value for.
  123 
  124   @return  The Boolean value for the token.
  125 
  126 **/
  127 #define FixedPcdGetBool(TokenName)          _PCD_VALUE_##TokenName
  128 
  129 
  130 /**
  131   Retrieves a pointer to a fixed PCD token buffer based on a token name.
  132 
  133   Returns a pointer to the buffer for the token specified by TokenName.
  134   If TokenName is not a valid token in the token space, then the module will not build.
  135   If TokenName is not a fixed at build PCD, then the module will not build.
  136 
  137   @param   TokenName  The name of the PCD token to retrieve a current value for.
  138 
  139   @return  A pointer to the buffer.
  140 
  141 **/
  142 #define FixedPcdGetPtr(TokenName)           ((VOID *)_PCD_VALUE_##TokenName)
  143 
  144 
  145 /**
  146   Retrieves an 8-bit binary patchable PCD token value based on a token name.
  147 
  148   Returns the 8-bit value for the token specified by TokenName.
  149   If TokenName is not a valid token in the token space, then the module will not build.
  150   If TokenName is not a patchable in module PCD, then the module will not build.
  151 
  152   @param   TokenName  The name of the PCD token to retrieve a current value for.
  153 
  154   @return  An 8-bit binary patchable PCD token value.
  155 
  156 **/
  157 #define PatchPcdGet8(TokenName)             _gPcd_BinaryPatch_##TokenName
  158 
  159 /**
  160   Retrieves a 16-bit binary patchable PCD token value based on a token name.
  161 
  162   Returns the 16-bit value for the token specified by TokenName.
  163   If TokenName is not a valid token in the token space, then the module will not build.
  164   If TokenName is not a patchable in module PCD, then the module will not build.
  165 
  166   @param   TokenName  The name of the PCD token to retrieve a current value for.
  167 
  168   @return  A 16-bit binary patchable PCD token value.
  169 
  170 **/
  171 #define PatchPcdGet16(TokenName)            _gPcd_BinaryPatch_##TokenName
  172 
  173 
  174 /**
  175   Retrieves a 32-bit binary patchable PCD token value based on a token name.
  176 
  177   Returns the 32-bit value for the token specified by TokenName.
  178   If TokenName is not a valid token in the token space, then the module will not build.
  179   If TokenName is not a patchable in module PCD, then the module will not build.
  180 
  181   @param   TokenName  The name of the PCD token to retrieve a current value for.
  182 
  183   @return  A 32-bit binary patchable PCD token value.
  184 
  185 **/
  186 #define PatchPcdGet32(TokenName)            _gPcd_BinaryPatch_##TokenName
  187 
  188 
  189 /**
  190   Retrieves a 64-bit binary patchable PCD token value based on a token name.
  191 
  192   Returns the 64-bit value for the token specified by TokenName.
  193   If TokenName is not a valid token in the token space, then the module will not build.
  194   If TokenName is not a patchable in module PCD, then the module will not build.
  195 
  196   @param   TokenName  The name of the PCD token to retrieve a current value for.
  197 
  198   @return  A 64-bit binary patchable PCD token value.
  199 
  200 **/
  201 #define PatchPcdGet64(TokenName)            _gPcd_BinaryPatch_##TokenName
  202 
  203 
  204 /**
  205   Retrieves a Boolean binary patchable PCD token value based on a token name.
  206 
  207   Returns the Boolean value for the token specified by TokenName.
  208   If TokenName is not a valid token in the token space, then the module will not build.
  209   If TokenName is not a patchable in module PCD, then the module will not build.
  210 
  211   @param   TokenName  The name of the PCD token to retrieve a current value for.
  212 
  213   @return  The Boolean value for the token.
  214 
  215 **/
  216 #define PatchPcdGetBool(TokenName)          _gPcd_BinaryPatch_##TokenName
  217 
  218 
  219 /**
  220   Retrieves a pointer to a binary patchable PCD token buffer based on a token name.
  221 
  222   Returns a pointer to the buffer for the token specified by TokenName.
  223   If TokenName is not a valid token in the token space, then the module will not build.
  224   If TokenName is not a patchable in module PCD, then the module will not build.
  225 
  226   @param   TokenName  The name of the PCD token to retrieve a current value for.
  227 
  228   @return  A pointer to the buffer for the token.
  229 
  230 **/
  231 #define PatchPcdGetPtr(TokenName)           ((VOID *)_gPcd_BinaryPatch_##TokenName)
  232 
  233 
  234 /**
  235   Sets an 8-bit binary patchable PCD token value based on a token name.
  236 
  237   Sets the 8-bit value for the token specified by TokenName. Value is returned.
  238   If TokenName is not a valid token in the token space, then the module will not build.
  239   If TokenName is not a patchable in module PCD, then the module will not build.
  240 
  241   @param   TokenName  The name of the binary patchable PCD token to set the current value for.
  242   @param   Value      The 8-bit value to set.
  243 
  244   @return Return the Value that was set.
  245 
  246 **/
  247 #define PatchPcdSet8(TokenName, Value)      (_gPcd_BinaryPatch_##TokenName = (Value))
  248 
  249 
  250 /**
  251   Sets a 16-bit binary patchable PCD token value based on a token name.
  252 
  253   Sets the 16-bit value for the token specified by TokenName. Value is returned.
  254   If TokenName is not a valid token in the token space, then the module will not build.
  255   If TokenName is not a patchable in module PCD, then the module will not build.
  256 
  257   @param   TokenName  The name of the binary patchable PCD token to set the current value for.
  258   @param   Value      The 16-bit value to set.
  259 
  260   @return Return the Value that was set.
  261 
  262 **/
  263 #define PatchPcdSet16(TokenName, Value)     (_gPcd_BinaryPatch_##TokenName = (Value))
  264 
  265 
  266 /**
  267   Sets a 32-bit binary patchable PCD token value based on a token name.
  268 
  269   Sets the 32-bit value for the token specified by TokenName. Value is returned.
  270   If TokenName is not a valid token in the token space, then the module will not build.
  271   If TokenName is not a patchable in module PCD, then the module will not build.
  272 
  273   @param   TokenName  The name of the binary patchable PCD token to set the current value for.
  274   @param   Value      The 32-bit value to set.
  275 
  276   @return Return the Value that was set.
  277 
  278 **/
  279 #define PatchPcdSet32(TokenName, Value)     (_gPcd_BinaryPatch_##TokenName = (Value))
  280 
  281 
  282 /**
  283   Sets a 64-bit binary patchable PCD token value based on a token name.
  284 
  285   Sets the 64-bit value for the token specified by TokenName. Value is returned.
  286   If TokenName is not a valid token in the token space, then the module will not build.
  287   If TokenName is not a patchable in module PCD, then the module will not build.
  288 
  289   @param   TokenName  The name of the binary patchable PCD token to set the current value for.
  290   @param   Value      The 64-bit value to set.
  291 
  292   @return Return the Value that was set.
  293 
  294 **/
  295 #define PatchPcdSet64(TokenName, Value)     (_gPcd_BinaryPatch_##TokenName = (Value))
  296 
  297 
  298 /**
  299   Sets a Boolean binary patchable PCD token value based on a token name.
  300 
  301   Sets the Boolean value for the token specified by TokenName. Value is returned.
  302   If TokenName is not a valid token in the token space, then the module will not build.
  303   If TokenName is not a patchable in module PCD, then the module will not build.
  304 
  305   @param   TokenName  The name of the binary patchable PCD token to set the current value for.
  306   @param   Value      The boolean value to set.
  307 
  308   @return Return the Value that was set.
  309 
  310 **/
  311 #define PatchPcdSetBool(TokenName, Value)   (_gPcd_BinaryPatch_##TokenName = (Value))
  312 
  313 
  314 /**
  315   Sets a pointer to a binary patchable PCD token buffer based on a token name.
  316 
  317   Sets the buffer for the token specified by TokenName.  Buffer is returned.
  318   If SizeOfBuffer is greater than the maximum size supported by TokenName, then set SizeOfBuffer
  319   to the maximum size supported by TokenName and return NULL to indicate that the set operation
  320   was not actually performed.  If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be
  321   set to the maximum size supported by TokenName and NULL must be returned.
  322   If TokenName is not a valid token in the token space, then the module will not build.
  323   If TokenName is not a patchable in module PCD, then the module will not build.
  324 
  325   If SizeOfBuffer is NULL, then ASSERT().
  326   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
  327 
  328   @param   TokenName      The name of the binary patchable PCD token to set the current value for.
  329   @param   SizeOfBuffer   A pointer to the size, in bytes, of Buffer.
  330   @param   Buffer         Pointer to the value to set.
  331 
  332   @return Return the pointer to the Buffer that was set.
  333 
  334 **/
  335 #define PatchPcdSetPtr(TokenName, Size, Buffer) \
  336                                             LibPatchPcdSetPtrAndSize (                 \
  337                                               (VOID *)_gPcd_BinaryPatch_##TokenName,   \
  338                                               &_gPcd_BinaryPatch_Size_##TokenName,     \
  339                                               (UINTN)_PCD_PATCHABLE_##TokenName##_SIZE, \
  340                                               (Size),                                  \
  341                                               (Buffer)                                 \
  342                                               )
  343 /**
  344   Retrieves an 8-bit PCD token value based on a token name.
  345 
  346   Returns the 8-bit value for the token specified by TokenName.
  347   If TokenName is not a valid token in the token space, then the module will not build.
  348 
  349   @param   TokenName  The name of the PCD token to retrieve a current value for.
  350 
  351   @return  8-bit value for the token specified by TokenName.
  352 
  353 **/
  354 #define PcdGet8(TokenName)                  _PCD_GET_MODE_8_##TokenName
  355 
  356 
  357 /**
  358   Retrieves a 16-bit PCD token value based on a token name.
  359 
  360   Returns the 16-bit value for the token specified by TokenName.
  361   If TokenName is not a valid token in the token space, then the module will not build.
  362 
  363   @param   TokenName  The name of the PCD token to retrieve a current value for.
  364 
  365   @return  16-bit value for the token specified by TokenName.
  366 
  367 **/
  368 #define PcdGet16(TokenName)                 _PCD_GET_MODE_16_##TokenName
  369 
  370 
  371 /**
  372   Retrieves a 32-bit PCD token value based on a token name.
  373 
  374   Returns the 32-bit value for the token specified by TokenName.
  375   If TokenName is not a valid token in the token space, then the module will not build.
  376 
  377   @param   TokenName  The name of the PCD token to retrieve a current value for.
  378 
  379   @return  32-bit value for the token specified by TokenName.
  380 
  381 **/
  382 #define PcdGet32(TokenName)                 _PCD_GET_MODE_32_##TokenName
  383 
  384 
  385 /**
  386   Retrieves a 64-bit PCD token value based on a token name.
  387 
  388   Returns the 64-bit value for the token specified by TokenName.
  389   If TokenName is not a valid token in the token space, then the module will not build.
  390 
  391   @param   TokenName  The name of the PCD token to retrieve a current value for.
  392 
  393   @return  64-bit value for the token specified by TokenName.
  394 
  395 **/
  396 #define PcdGet64(TokenName)                 _PCD_GET_MODE_64_##TokenName
  397 
  398 
  399 /**
  400   Retrieves a pointer to a PCD token buffer based on a token name.
  401 
  402   Returns a pointer to the buffer for the token specified by TokenName.
  403   If TokenName is not a valid token in the token space, then the module will not build.
  404 
  405   @param   TokenName  The name of the PCD token to retrieve a current value for.
  406 
  407   @return  A pointer to the buffer.
  408 
  409 **/
  410 #define PcdGetPtr(TokenName)                _PCD_GET_MODE_PTR_##TokenName
  411 
  412 
  413 /**
  414   Retrieves a Boolean PCD token value based on a token name.
  415 
  416   Returns the Boolean value for the token specified by TokenName.
  417   If TokenName is not a valid token in the token space, then the module will not build.
  418 
  419   @param   TokenName  The name of the PCD token to retrieve a current value for.
  420 
  421   @return  A Boolean PCD token value.
  422 
  423 **/
  424 #define PcdGetBool(TokenName)               _PCD_GET_MODE_BOOL_##TokenName
  425 
  426 
  427 /**
  428   Retrieves the size of a fixed PCD token based on a token name.
  429 
  430   Returns the size of the token specified by TokenName.
  431   If TokenName is not a valid token in the token space, then the module will not build.
  432 
  433   @param[in]  TokenName  The name of the PCD token to retrieve a current value size for.
  434 
  435   @return     Return the size
  436 
  437 **/
  438 #define FixedPcdGetSize(TokenName)    _PCD_SIZE_##TokenName
  439 
  440 
  441 /**
  442   Retrieves the size of a binary patchable PCD token based on a token name.
  443 
  444   Returns the size of the token specified by TokenName.
  445   If TokenName is not a valid token in the token space, then the module will not build.
  446 
  447   @param[in]  TokenName  The name of the PCD token to retrieve a current value size for.
  448 
  449   @return     Return the size
  450 
  451 **/
  452 #define PatchPcdGetSize(TokenName)    _gPcd_BinaryPatch_Size_##TokenName
  453 
  454 
  455 /**
  456   Retrieves the size of the PCD token based on a token name.
  457 
  458   Returns the size of the token specified by TokenName.
  459   If TokenName is not a valid token in the token space, then the module will not build.
  460 
  461   @param[in]   TokenName  The name of the PCD token to retrieve a current value size for.
  462 
  463   @return      Return the size
  464 
  465 **/
  466 #define PcdGetSize(TokenName)         _PCD_GET_MODE_SIZE_##TokenName
  467 
  468 
  469 /**
  470   Retrieve the size of a given PCD token.
  471 
  472   Returns the size of the token specified by TokenNumber and Guid.
  473   If Guid is NULL, then ASSERT().
  474 
  475   @param[in]  Guid          Pointer to a 128-bit unique value that designates
  476                             which namespace to retrieve a value from.
  477   @param[in]  TokenNumber   The PCD token number to retrieve a current value size for.
  478 
  479   @return     Return the size.
  480 
  481 **/
  482 #define PcdGetExSize(Guid, TokenName) LibPcdGetExSize ((Guid), PcdTokenEx(Guid,TokenName))
  483 
  484 #ifndef DISABLE_NEW_DEPRECATED_INTERFACES
  485 /**
  486   Sets an 8-bit PCD token value based on a token name.
  487 
  488   Sets the 8-bit value for the token specified by TokenName. Value is returned.
  489   If TokenName is not a valid token in the token space, then the module will not build.
  490 
  491   @param   TokenName  The name of the PCD token to retrieve a current value for.
  492   @param   Value      The 8-bit value to set.
  493 
  494   @return Return the Value that was set.
  495 
  496 **/
  497 #define PcdSet8(TokenName, Value)           _PCD_SET_MODE_8_##TokenName     ((Value))
  498 
  499 
  500 /**
  501   Sets a 16-bit PCD token value based on a token name.
  502 
  503   Sets the 16-bit value for the token specified by TokenName. Value is returned.
  504   If TokenName is not a valid token in the token space, then the module will not build.
  505 
  506   @param   TokenName  The name of the PCD token to retrieve a current value for.
  507   @param   Value      The 16-bit value to set.
  508 
  509   @return Return the Value that was set.
  510 
  511 **/
  512 #define PcdSet16(TokenName, Value)          _PCD_SET_MODE_16_##TokenName    ((Value))
  513 
  514 
  515 /**
  516   Sets a 32-bit PCD token value based on a token name.
  517 
  518   Sets the 32-bit value for the token specified by TokenName. Value is returned.
  519   If TokenName is not a valid token in the token space, then the module will not build.
  520 
  521   @param   TokenName  The name of the PCD token to retrieve a current value for.
  522   @param   Value      The 32-bit value to set.
  523 
  524   @return Return the Value that was set.
  525 
  526 **/
  527 #define PcdSet32(TokenName, Value)          _PCD_SET_MODE_32_##TokenName    ((Value))
  528 
  529 
  530 /**
  531   Sets a 64-bit PCD token value based on a token name.
  532 
  533   Sets the 64-bit value for the token specified by TokenName. Value is returned.
  534   If TokenName is not a valid token in the token space, then the module will not build.
  535 
  536   @param   TokenName  The name of the PCD token to retrieve a current value for.
  537   @param   Value      The 64-bit value to set.
  538 
  539   @return Return the Value that was set.
  540 
  541 **/
  542 #define PcdSet64(TokenName, Value)          _PCD_SET_MODE_64_##TokenName    ((Value))
  543 
  544 
  545 /**
  546   Sets a pointer to a PCD token buffer based on a token name.
  547 
  548   Sets the buffer for the token specified by TokenName. Buffer is returned.
  549   If SizeOfBuffer is greater than the maximum size supported by TokenName,
  550   then set SizeOfBuffer to the maximum size supported by TokenName and return NULL
  551   to indicate that the set operation was not actually performed.  If SizeOfBuffer
  552   is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size supported
  553   by TokenName and NULL must be returned.
  554   If TokenName is not a valid token in the token space, then the module will not build.
  555 
  556   If SizeOfBuffer is NULL, then ASSERT().
  557   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
  558 
  559   @param   TokenName      The name of the PCD token to set the current value for.
  560   @param   SizeOfBuffer   A pointer to the size, in bytes, of Buffer.
  561   @param   Buffer         A pointer to the buffer to set.
  562 
  563   @return Return the pointer to the Buffer that was set.
  564 
  565 **/
  566 #define PcdSetPtr(TokenName, SizeOfBuffer, Buffer) \
  567                                             _PCD_SET_MODE_PTR_##TokenName   ((SizeOfBuffer), (Buffer))
  568 
  569 /**
  570   Sets a Boolean PCD token value based on a token name.
  571 
  572   Sets the Boolean value for the token specified by TokenName. Value is returned.
  573   If TokenName is not a valid token in the token space, then the module will not build.
  574 
  575   @param   TokenName      The name of the PCD token to set the current value for.
  576   @param   Buffer         The Boolean value to set.
  577 
  578   @return Return the Value that was set.
  579 
  580 **/
  581 #define PcdSetBool(TokenName, Value)        _PCD_SET_MODE_BOOL_##TokenName  ((Value))
  582 #endif
  583 
  584 /**
  585   Sets a 8-bit PCD token value based on a token name.
  586 
  587   Sets the 8-bit value for the token specified by TokenName.
  588   If TokenName is not a valid token in the token space, then the module will not build.
  589 
  590   @param TokenName  The name of the PCD token to retrieve a current value for.
  591   @param Value      The 8-bit value to set.
  592 
  593   @return The status of the set operation.
  594 
  595 **/
  596 #define PcdSet8S(TokenName, Value)          _PCD_SET_MODE_8_S_##TokenName    ((Value))
  597 
  598 /**
  599   Sets a 16-bit PCD token value based on a token name.
  600 
  601   Sets the 16-bit value for the token specified by TokenName.
  602   If TokenName is not a valid token in the token space, then the module will not build.
  603 
  604   @param TokenName  The name of the PCD token to retrieve a current value for.
  605   @param Value      The 16-bit value to set.
  606 
  607   @return The status of the set operation.
  608 
  609 **/
  610 #define PcdSet16S(TokenName, Value)         _PCD_SET_MODE_16_S_##TokenName    ((Value))
  611 
  612 /**
  613   Sets a 32-bit PCD token value based on a token name.
  614 
  615   Sets the 32-bit value for the token specified by TokenName.
  616   If TokenName is not a valid token in the token space, then the module will not build.
  617 
  618   @param TokenName  The name of the PCD token to retrieve a current value for.
  619   @param Value      The 32-bit value to set.
  620 
  621   @return The status of the set operation.
  622 
  623 **/
  624 #define PcdSet32S(TokenName, Value)         _PCD_SET_MODE_32_S_##TokenName    ((Value))
  625 
  626 /**
  627   Sets a 64-bit PCD token value based on a token name.
  628 
  629   Sets the 64-bit value for the token specified by TokenName.
  630   If TokenName is not a valid token in the token space, then the module will not build.
  631 
  632   @param TokenName  The name of the PCD token to retrieve a current value for.
  633   @param Value      The 64-bit value to set.
  634 
  635   @return The status of the set operation.
  636 
  637 **/
  638 #define PcdSet64S(TokenName, Value)         _PCD_SET_MODE_64_S_##TokenName    ((Value))
  639 
  640 /**
  641   Sets a pointer to a PCD token buffer based on a token name.
  642 
  643   Sets the buffer for the token specified by TokenName.
  644   If SizeOfBuffer is greater than the maximum size supported by TokenName,
  645   then set SizeOfBuffer to the maximum size supported by TokenName and return
  646   RETURN_INVALID_PARAMETER to indicate that the set operation was not actually performed.
  647   If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size
  648   supported by TokenName and RETURN_INVALID_PARAMETER must be returned.
  649   If TokenName is not a valid token in the token space, then the module will not build.
  650 
  651   If SizeOfBuffer is NULL, then ASSERT().
  652   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
  653 
  654   @param TokenName      The name of the PCD token to set the current value for.
  655   @param SizeOfBuffer   A pointer to the size, in bytes, of Buffer.
  656   @param Buffer         A pointer to the buffer to set.
  657 
  658   @return The status of the set operation.
  659 
  660 **/
  661 #define PcdSetPtrS(TokenName, SizeOfBuffer, Buffer) \
  662                                             _PCD_SET_MODE_PTR_S_##TokenName   ((SizeOfBuffer), (Buffer))
  663 
  664 
  665 
  666 /**
  667   Sets a boolean PCD token value based on a token name.
  668 
  669   Sets the boolean value for the token specified by TokenName.
  670   If TokenName is not a valid token in the token space, then the module will not build.
  671 
  672   @param TokenName  The name of the PCD token to retrieve a current value for.
  673   @param Value      The boolean value to set.
  674 
  675   @return The status of the set operation.
  676 
  677 **/
  678 #define PcdSetBoolS(TokenName, Value)       _PCD_SET_MODE_BOOL_S_##TokenName    ((Value))
  679 
  680 /**
  681   Retrieves a token number based on a GUID and a token name.
  682 
  683   Returns the token number for the token specified by Guid and TokenName.
  684   If TokenName is not a valid token in the token space, then the module will not build.
  685 
  686   @param   Guid        Pointer to a 128-bit unique value that designates
  687                        which namespace to retrieve a value from.
  688   @param   TokenName   The name of the PCD token to retrieve a current value for.
  689 
  690   @return  Return the token number.
  691 
  692 **/
  693 #define PcdTokenEx(Guid,TokenName)  _PCD_TOKEN_EX_##TokenName(Guid)
  694 
  695 /**
  696   Retrieves an 8-bit PCD token value based on a GUID and a token name.
  697 
  698   Returns the 8-bit value for the token specified by Guid and TokenName.
  699   If TokenName is not a valid token in the token space specified by Guid,
  700   then the module will not build.
  701 
  702   If Guid is NULL, then ASSERT().
  703 
  704   @param   Guid        Pointer to a 128-bit unique value that designates
  705                        which namespace to retrieve a value from.
  706   @param   TokenName   The name of the PCD token to retrieve a current value for.
  707 
  708   @return  An 8-bit PCD token value.
  709 
  710 **/
  711 #define PcdGetEx8(Guid, TokenName)          LibPcdGetEx8 ((Guid), PcdTokenEx(Guid,TokenName))
  712 
  713 /**
  714   Retrieves a 16-bit PCD token value based on a GUID and a token name.
  715 
  716   Returns the 16-bit value for the token specified by Guid and TokenName.
  717   If TokenName is not a valid token in the token space specified by Guid,
  718   then the module will not build.
  719 
  720   If Guid is NULL, then ASSERT().
  721 
  722   @param   Guid        Pointer to a 128-bit unique value that designates
  723                        which namespace to retrieve a value from.
  724   @param   TokenName   The name of the PCD token to retrieve a current value for.
  725 
  726   @return  A 16-bit PCD token value.
  727 
  728 **/
  729 #define PcdGetEx16(Guid, TokenName)         LibPcdGetEx16 ((Guid), PcdTokenEx(Guid,TokenName))
  730 
  731 
  732 /**
  733   Retrieves a 32-bit PCD token value based on a GUID and a token name.
  734 
  735   Returns the 32-bit value for the token specified by Guid and TokenName.
  736   If TokenName is not a valid token in the token space specified by Guid,
  737   then the module will not build.
  738 
  739   If Guid is NULL, then ASSERT().
  740 
  741   @param   Guid        Pointer to a 128-bit unique value that designates
  742                        which namespace to retrieve a value from.
  743   @param   TokenName   The name of the PCD token to retrieve a current value for.
  744 
  745   @return  A 32-bit PCD token value.
  746 
  747 **/
  748 #define PcdGetEx32(Guid, TokenName)         LibPcdGetEx32 ((Guid), PcdTokenEx(Guid,TokenName))
  749 
  750 
  751 /**
  752   Retrieves a 64-bit PCD token value based on a GUID and a token name.
  753 
  754   Returns the 64-bit value for the token specified by Guid and TokenName.
  755   If TokenName is not a valid token in the token space specified by Guid,
  756   then the module will not build.
  757 
  758   If Guid is NULL, then ASSERT().
  759 
  760   @param   Guid        Pointer to a 128-bit unique value that designates
  761                        which namespace to retrieve a value from.
  762   @param   TokenName   The name of the PCD token to retrieve a current value for.
  763 
  764   @return  A 64-bit PCD token value.
  765 
  766 **/
  767 #define PcdGetEx64(Guid, TokenName)         LibPcdGetEx64 ((Guid), PcdTokenEx(Guid,TokenName))
  768 
  769 
  770 /**
  771   Retrieves a pointer to a PCD token buffer based on a GUID and a token name.
  772 
  773   Returns a pointer to the buffer for the token specified by Guid and TokenName.
  774   If TokenName is not a valid token in the token space specified by Guid,
  775   then the module will not build.
  776 
  777   If Guid is NULL, then ASSERT().
  778 
  779   @param   Guid        Pointer to a 128-bit unique value that designates
  780                        which namespace to retrieve a value from.
  781   @param   TokenName   The name of the PCD token to retrieve a current value for.
  782 
  783   @return  A pointer to a PCD token buffer.
  784 
  785 **/
  786 #define PcdGetExPtr(Guid, TokenName)        LibPcdGetExPtr ((Guid), PcdTokenEx(Guid,TokenName))
  787 
  788 
  789 /**
  790   Retrieves a Boolean PCD token value based on a GUID and a token name.
  791 
  792   Returns the Boolean value for the token specified by Guid and TokenName.
  793   If TokenName is not a valid token in the token space specified by Guid,
  794   then the module will not build.
  795 
  796   If Guid is NULL, then ASSERT().
  797 
  798   @param   Guid        Pointer to a 128-bit unique value that designates
  799                        which namespace to retrieve a value from.
  800   @param   TokenName   The name of the PCD token to retrieve a current value for.
  801 
  802   @return  A Boolean PCD token value.
  803 
  804 **/
  805 #define PcdGetExBool(Guid, TokenName)       LibPcdGetExBool  ((Guid), PcdTokenEx(Guid,TokenName))
  806 
  807 
  808 
  809 #ifndef DISABLE_NEW_DEPRECATED_INTERFACES
  810 /**
  811   Sets an 8-bit PCD token value based on a GUID and a token name.
  812 
  813   Sets the 8-bit value for the token specified by Guid and TokenName. Value is returned.
  814   If TokenName is not a valid token in the token space specified by Guid,
  815   then the module will not build.
  816 
  817   If Guid is NULL, then ASSERT().
  818 
  819   @param   Guid        Pointer to a 128-bit unique value that designates
  820                        which namespace to retrieve a value from.
  821   @param   TokenName   The name of the PCD token to set the current value for.
  822   @param   Value       The 8-bit value to set.
  823 
  824   @return Return the Value that was set.
  825 
  826 **/
  827 #define PcdSetEx8(Guid, TokenName, Value)   LibPcdSetEx8   ((Guid), PcdTokenEx(Guid,TokenName), (Value))
  828 
  829 
  830 /**
  831   Sets a 16-bit PCD token value based on a GUID and a token name.
  832 
  833   Sets the 16-bit value for the token specified by Guid and TokenName. Value is returned.
  834   If TokenName is not a valid token in the token space specified by Guid,
  835   then the module will not build.
  836 
  837   If Guid is NULL, then ASSERT().
  838 
  839   @param   Guid        Pointer to a 128-bit unique value that designates
  840                        which namespace to retrieve a value from.
  841   @param   TokenName   The name of the PCD token to set the current value for.
  842   @param   Value       The 16-bit value to set.
  843 
  844   @return Return the Value that was set.
  845 
  846 **/
  847 #define PcdSetEx16(Guid, TokenName, Value)  LibPcdSetEx16  ((Guid), PcdTokenEx(Guid,TokenName), (Value))
  848 
  849 
  850 /**
  851   Sets a 32-bit PCD token value based on a GUID and a token name.
  852 
  853   Sets the 32-bit value for the token specified by Guid and TokenName. Value is returned.
  854   If TokenName is not a valid token in the token space specified by Guid,
  855   then the module will not build.
  856 
  857   If Guid is NULL, then ASSERT().
  858 
  859   @param   Guid        Pointer to a 128-bit unique value that designates
  860                        which namespace to retrieve a value from.
  861   @param   TokenName   The name of the PCD token to set the current value for.
  862   @param   Value       The 32-bit value to set.
  863 
  864   @return Return the Value that was set.
  865 
  866 **/
  867 #define PcdSetEx32(Guid, TokenName, Value)  LibPcdSetEx32  ((Guid), PcdTokenEx(Guid,TokenName), (Value))
  868 
  869 
  870 /**
  871   Sets a 64-bit PCD token value based on a GUID and a token name.
  872 
  873   Sets the 64-bit value for the token specified by Guid and TokenName. Value is returned.
  874   If TokenName is not a valid token in the token space specified by Guid,
  875   then the module will not build.
  876 
  877   If Guid is NULL, then ASSERT().
  878 
  879   @param   Guid        Pointer to a 128-bit unique value that designates
  880   which namespace to retrieve a value from.
  881   @param   TokenName   The name of the PCD token to set the current value for.
  882   @param   Value       The 64-bit value to set.
  883 
  884   @return Return the Value that was set.
  885 
  886 **/
  887 #define PcdSetEx64(Guid, TokenName, Value)  LibPcdSetEx64  ((Guid), PcdTokenEx(Guid,TokenName), (Value))
  888 
  889 
  890 /**
  891   Sets a pointer to a PCD token buffer based on a GUID and a token name.
  892 
  893   Sets the buffer for the token specified by Guid and TokenName. Buffer is returned.
  894   If SizeOfBuffer is greater than the maximum size supported by Guid and TokenName,
  895   then set SizeOfBuffer to the maximum size supported by Guid and TokenName and return
  896   NULL to indicate that the set operation was not actually performed. If SizeOfBuffer
  897   is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size supported by
  898   Guid and TokenName and NULL must be returned.
  899   If TokenName is not a valid token in the token space specified by Guid,
  900   then the module will not build.
  901 
  902   If Guid is NULL, then ASSERT().
  903   If SizeOfBuffer is NULL, then ASSERT().
  904   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
  905 
  906   @param   Guid           Pointer to a 128-bit unique value that designates
  907                           which namespace to retrieve a value from.
  908   @param   TokenName      The name of the PCD token to set the current value for.
  909   @param   SizeOfBuffer   A pointer to the size, in bytes, of Buffer.
  910   @param   Buffer         Pointer to the buffer to set.
  911 
  912   @return Return the pointer to the Buffer that was set.
  913 
  914 **/
  915 #define PcdSetExPtr(Guid, TokenName, SizeOfBuffer, Buffer) \
  916                                             LibPcdSetExPtr ((Guid), PcdTokenEx(Guid,TokenName), (SizeOfBuffer), (Buffer))
  917 
  918 
  919 /**
  920   Sets a Boolean PCD token value based on a GUID and a token name.
  921 
  922   Sets the Boolean value for the token specified by Guid and TokenName. Value is returned.
  923   If TokenName is not a valid token in the token space specified by Guid,
  924   then the module will not build.
  925 
  926   If Guid is NULL, then ASSERT().
  927 
  928   @param   Guid           Pointer to a 128-bit unique value that designates
  929                           which namespace to retrieve a value from.
  930   @param   TokenName      The name of the PCD token to set the current value for.
  931   @param   Value          The Boolean value to set.
  932 
  933   @return Return the Value that was set.
  934 
  935 **/
  936 #define PcdSetExBool(Guid, TokenName, Value) \
  937                                             LibPcdSetExBool((Guid), PcdTokenEx(Guid,TokenName), (Value))
  938 #endif
  939 
  940 /**
  941   Sets an 8-bit PCD token value based on a GUID and a token name.
  942 
  943   Sets the 8-bit value for the token specified by Guid and TokenName.
  944   If TokenName is not a valid token in the token space specified by Guid,
  945   then the module will not build.
  946 
  947   If Guid is NULL, then ASSERT().
  948 
  949   @param Guid       Pointer to a 128-bit unique value that designates
  950                     which namespace to retrieve a value from.
  951   @param TokenName  The name of the PCD token to set the current value for.
  952   @param Value      The 8-bit value to set.
  953 
  954   @return The status of the set operation.
  955 
  956 **/
  957 #define PcdSetEx8S(Guid, TokenName, Value)     LibPcdSetEx8S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
  958 
  959 /**
  960   Sets an 16-bit PCD token value based on a GUID and a token name.
  961 
  962   Sets the 16-bit value for the token specified by Guid and TokenName.
  963   If TokenName is not a valid token in the token space specified by Guid,
  964   then the module will not build.
  965 
  966   If Guid is NULL, then ASSERT().
  967 
  968   @param Guid       Pointer to a 128-bit unique value that designates
  969                     which namespace to retrieve a value from.
  970   @param TokenName  The name of the PCD token to set the current value for.
  971   @param Value      The 16-bit value to set.
  972 
  973   @return The status of the set operation.
  974 
  975 **/
  976 #define PcdSetEx16S(Guid, TokenName, Value)    LibPcdSetEx16S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
  977 
  978 /**
  979   Sets an 32-bit PCD token value based on a GUID and a token name.
  980 
  981   Sets the 32-bit value for the token specified by Guid and TokenName.
  982   If TokenName is not a valid token in the token space specified by Guid,
  983   then the module will not build.
  984 
  985   If Guid is NULL, then ASSERT().
  986 
  987   @param Guid       Pointer to a 128-bit unique value that designates
  988                     which namespace to retrieve a value from.
  989   @param TokenName  The name of the PCD token to set the current value for.
  990   @param Value      The 32-bit value to set.
  991 
  992   @return The status of the set operation.
  993 
  994 **/
  995 #define PcdSetEx32S(Guid, TokenName, Value)    LibPcdSetEx32S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
  996 
  997 /**
  998   Sets an 64-bit PCD token value based on a GUID and a token name.
  999 
 1000   Sets the 64-bit value for the token specified by Guid and TokenName.
 1001   If TokenName is not a valid token in the token space specified by Guid,
 1002   then the module will not build.
 1003 
 1004   If Guid is NULL, then ASSERT().
 1005 
 1006   @param Guid       Pointer to a 128-bit unique value that designates
 1007                     which namespace to retrieve a value from.
 1008   @param TokenName  The name of the PCD token to set the current value for.
 1009   @param Value      The 64-bit value to set.
 1010 
 1011   @return The status of the set operation.
 1012 
 1013 **/
 1014 #define PcdSetEx64S(Guid, TokenName, Value)    LibPcdSetEx64S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
 1015 
 1016 /**
 1017   Sets a pointer to a PCD token buffer based on a GUID and a token name.
 1018 
 1019   Sets the buffer for the token specified by Guid and TokenName.
 1020   If SizeOfBuffer is greater than the maximum size supported by Guid and TokenName,
 1021   then set SizeOfBuffer to the maximum size supported by Guid and TokenName and return
 1022   RETURN_INVALID_PARAMETER to indicate that the set operation was not actually performed.
 1023   If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size
 1024   supported by Guid and TokenName and RETURN_INVALID_PARAMETER must be returned.
 1025   If TokenName is not a valid token in the token space specified by Guid,
 1026   then the module will not build.
 1027 
 1028   If Guid is NULL, then ASSERT().
 1029   If SizeOfBuffer is NULL, then ASSERT().
 1030   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
 1031 
 1032   @param Guid           Pointer to a 128-bit unique value that designates
 1033                         which namespace to retrieve a value from.
 1034   @param TokenName      The name of the PCD token to set the current value for.
 1035   @param SizeOfBuffer   A pointer to the size, in bytes, of Buffer.
 1036   @param Buffer         Pointer to the buffer to set.
 1037 
 1038   @return The status of the set operation.
 1039 
 1040 **/
 1041 #define PcdSetExPtrS(Guid, TokenName, SizeOfBuffer, Buffer) \
 1042                                             LibPcdSetExPtrS ((Guid), PcdTokenEx(Guid,TokenName), (SizeOfBuffer), (Buffer))
 1043 
 1044 
 1045 /**
 1046   Sets an boolean PCD token value based on a GUID and a token name.
 1047 
 1048   Sets the boolean value for the token specified by Guid and TokenName.
 1049   If TokenName is not a valid token in the token space specified by Guid,
 1050   then the module will not build.
 1051 
 1052   If Guid is NULL, then ASSERT().
 1053 
 1054   @param Guid       Pointer to a 128-bit unique value that designates
 1055                     which namespace to retrieve a value from.
 1056   @param TokenName  The name of the PCD token to set the current value for.
 1057   @param Value      The boolean value to set.
 1058 
 1059   @return The status of the set operation.
 1060 
 1061 **/
 1062 #define PcdSetExBoolS(Guid, TokenName, Value) \
 1063                                             LibPcdSetExBoolS ((Guid), PcdTokenEx(Guid,TokenName), (Value))
 1064 
 1065 /**
 1066   This function provides a means by which SKU support can be established in the PCD infrastructure.
 1067 
 1068   Sets the current SKU in the PCD database to the value specified by SkuId.  SkuId is returned.
 1069 
 1070   @param  SkuId   The SKU value that will be used when the PCD service retrieves and sets values
 1071                   associated with a PCD token.
 1072 
 1073   @return  Return the SKU ID that was set.
 1074 
 1075 **/
 1076 UINTN
 1077 EFIAPI
 1078 LibPcdSetSku (
 1079   IN UINTN   SkuId
 1080   );
 1081 
 1082 
 1083 /**
 1084   This function provides a means by which to retrieve a value for a given PCD token.
 1085 
 1086   Returns the 8-bit value for the token specified by TokenNumber.
 1087 
 1088   @param[in]  TokenNumber The PCD token number to retrieve a current value for.
 1089 
 1090   @return Returns the 8-bit value for the token specified by TokenNumber.
 1091 
 1092 **/
 1093 UINT8
 1094 EFIAPI
 1095 LibPcdGet8 (
 1096   IN UINTN             TokenNumber
 1097   );
 1098 
 1099 
 1100 /**
 1101   This function provides a means by which to retrieve a value for a given PCD token.
 1102 
 1103   Returns the 16-bit value for the token specified by TokenNumber.
 1104 
 1105   @param[in]  TokenNumber The PCD token number to retrieve a current value for.
 1106 
 1107   @return Returns the 16-bit value for the token specified by TokenNumber.
 1108 
 1109 **/
 1110 UINT16
 1111 EFIAPI
 1112 LibPcdGet16 (
 1113   IN UINTN             TokenNumber
 1114   );
 1115 
 1116 
 1117 /**
 1118   This function provides a means by which to retrieve a value for a given PCD token.
 1119 
 1120   Returns the 32-bit value for the token specified by TokenNumber.
 1121 
 1122   @param[in]  TokenNumber The PCD token number to retrieve a current value for.
 1123 
 1124   @return Returns the 32-bit value for the token specified by TokenNumber.
 1125 
 1126 **/
 1127 UINT32
 1128 EFIAPI
 1129 LibPcdGet32 (
 1130   IN UINTN             TokenNumber
 1131   );
 1132 
 1133 
 1134 /**
 1135   This function provides a means by which to retrieve a value for a given PCD token.
 1136 
 1137   Returns the 64-bit value for the token specified by TokenNumber.
 1138 
 1139   @param[in]  TokenNumber The PCD token number to retrieve a current value for.
 1140 
 1141   @return Returns the 64-bit value for the token specified by TokenNumber.
 1142 
 1143 **/
 1144 UINT64
 1145 EFIAPI
 1146 LibPcdGet64 (
 1147   IN UINTN             TokenNumber
 1148   );
 1149 
 1150 
 1151 /**
 1152   This function provides a means by which to retrieve a value for a given PCD token.
 1153 
 1154   Returns the pointer to the buffer of the token specified by TokenNumber.
 1155 
 1156   @param[in]  TokenNumber The PCD token number to retrieve a current value for.
 1157 
 1158   @return Returns the pointer to the token specified by TokenNumber.
 1159 
 1160 **/
 1161 VOID *
 1162 EFIAPI
 1163 LibPcdGetPtr (
 1164   IN UINTN             TokenNumber
 1165   );
 1166 
 1167 
 1168 /**
 1169   This function provides a means by which to retrieve a value for a given PCD token.
 1170 
 1171   Returns the Boolean value of the token specified by TokenNumber.
 1172 
 1173   @param[in]  TokenNumber The PCD token number to retrieve a current value for.
 1174 
 1175   @return Returns the Boolean value of the token specified by TokenNumber.
 1176 
 1177 **/
 1178 BOOLEAN
 1179 EFIAPI
 1180 LibPcdGetBool (
 1181   IN UINTN             TokenNumber
 1182   );
 1183 
 1184 
 1185 /**
 1186   This function provides a means by which to retrieve the size of a given PCD token.
 1187 
 1188   @param[in]  TokenNumber The PCD token number to retrieve a current value for.
 1189 
 1190   @return Returns the size of the token specified by TokenNumber.
 1191 
 1192 **/
 1193 UINTN
 1194 EFIAPI
 1195 LibPcdGetSize (
 1196   IN UINTN             TokenNumber
 1197   );
 1198 
 1199 
 1200 /**
 1201   This function provides a means by which to retrieve a value for a given PCD token.
 1202 
 1203   Returns the 8-bit value for the token specified by TokenNumber and Guid.
 1204 
 1205   If Guid is NULL, then ASSERT().
 1206 
 1207   @param[in]  Guid         Pointer to a 128-bit unique value that designates
 1208                            which namespace to retrieve a value from.
 1209   @param[in]  TokenNumber  The PCD token number to retrieve a current value for.
 1210 
 1211   @return Return the UINT8.
 1212 
 1213 **/
 1214 UINT8
 1215 EFIAPI
 1216 LibPcdGetEx8 (
 1217   IN CONST GUID        *Guid,
 1218   IN UINTN             TokenNumber
 1219   );
 1220 
 1221 
 1222 /**
 1223   This function provides a means by which to retrieve a value for a given PCD token.
 1224 
 1225   Returns the 16-bit value for the token specified by TokenNumber and Guid.
 1226 
 1227   If Guid is NULL, then ASSERT().
 1228 
 1229   @param[in]  Guid         Pointer to a 128-bit unique value that designates
 1230                            which namespace to retrieve a value from.
 1231   @param[in]  TokenNumber  The PCD token number to retrieve a current value for.
 1232 
 1233   @return Return the UINT16.
 1234 
 1235 **/
 1236 UINT16
 1237 EFIAPI
 1238 LibPcdGetEx16 (
 1239   IN CONST GUID        *Guid,
 1240   IN UINTN             TokenNumber
 1241   );
 1242 
 1243 
 1244 /**
 1245   Returns the 32-bit value for the token specified by TokenNumber and Guid.
 1246   If Guid is NULL, then ASSERT().
 1247 
 1248   @param[in]  Guid         Pointer to a 128-bit unique value that designates
 1249                            which namespace to retrieve a value from.
 1250   @param[in]  TokenNumber  The PCD token number to retrieve a current value for.
 1251 
 1252   @return Return the UINT32.
 1253 
 1254 **/
 1255 UINT32
 1256 EFIAPI
 1257 LibPcdGetEx32 (
 1258   IN CONST GUID        *Guid,
 1259   IN UINTN             TokenNumber
 1260   );
 1261 
 1262 
 1263 /**
 1264   This function provides a means by which to retrieve a value for a given PCD token.
 1265 
 1266   Returns the 64-bit value for the token specified by TokenNumber and Guid.
 1267 
 1268   If Guid is NULL, then ASSERT().
 1269 
 1270   @param[in]  Guid          Pointer to a 128-bit unique value that designates
 1271                             which namespace to retrieve a value from.
 1272   @param[in]  TokenNumber   The PCD token number to retrieve a current value for.
 1273 
 1274   @return Return the UINT64.
 1275 
 1276 **/
 1277 UINT64
 1278 EFIAPI
 1279 LibPcdGetEx64 (
 1280   IN CONST GUID        *Guid,
 1281   IN UINTN             TokenNumber
 1282   );
 1283 
 1284 
 1285 /**
 1286   This function provides a means by which to retrieve a value for a given PCD token.
 1287 
 1288   Returns the pointer to the buffer of token specified by TokenNumber and Guid.
 1289 
 1290   If Guid is NULL, then ASSERT().
 1291 
 1292   @param[in]  Guid          Pointer to a 128-bit unique value that designates
 1293                             which namespace to retrieve a value from.
 1294   @param[in]  TokenNumber   The PCD token number to retrieve a current value for.
 1295 
 1296   @return Return the VOID* pointer.
 1297 
 1298 **/
 1299 VOID *
 1300 EFIAPI
 1301 LibPcdGetExPtr (
 1302   IN CONST GUID        *Guid,
 1303   IN UINTN             TokenNumber
 1304   );
 1305 
 1306 
 1307 /**
 1308   This function provides a means by which to retrieve a value for a given PCD token.
 1309 
 1310   Returns the Boolean value of the token specified by TokenNumber and Guid.
 1311 
 1312   If Guid is NULL, then ASSERT().
 1313 
 1314   @param[in]  Guid          Pointer to a 128-bit unique value that designates
 1315                             which namespace to retrieve a value from.
 1316   @param[in]  TokenNumber   The PCD token number to retrieve a current value for.
 1317 
 1318   @return Return the BOOLEAN.
 1319 
 1320 **/
 1321 BOOLEAN
 1322 EFIAPI
 1323 LibPcdGetExBool (
 1324   IN CONST GUID        *Guid,
 1325   IN UINTN             TokenNumber
 1326   );
 1327 
 1328 
 1329 /**
 1330   This function provides a means by which to retrieve the size of a given PCD token.
 1331 
 1332   Returns the size of the token specified by TokenNumber and Guid.
 1333 
 1334   If Guid is NULL, then ASSERT().
 1335 
 1336   @param[in]  Guid          Pointer to a 128-bit unique value that designates
 1337                             which namespace to retrieve a value from.
 1338   @param[in]  TokenNumber   The PCD token number to retrieve a current value for.
 1339 
 1340   @return Return the size.
 1341 
 1342 **/
 1343 UINTN
 1344 EFIAPI
 1345 LibPcdGetExSize (
 1346   IN CONST GUID        *Guid,
 1347   IN UINTN             TokenNumber
 1348   );
 1349 
 1350 
 1351 #ifndef DISABLE_NEW_DEPRECATED_INTERFACES
 1352 /**
 1353   This function provides a means by which to set a value for a given PCD token.
 1354 
 1355   Sets the 8-bit value for the token specified by TokenNumber
 1356   to the value specified by Value.  Value is returned.
 1357 
 1358   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1359   @param[in]  Value         The 8-bit value to set.
 1360 
 1361   @return Return the Value that was set.
 1362 
 1363 **/
 1364 UINT8
 1365 EFIAPI
 1366 LibPcdSet8 (
 1367   IN UINTN             TokenNumber,
 1368   IN UINT8             Value
 1369   );
 1370 
 1371 
 1372 /**
 1373   This function provides a means by which to set a value for a given PCD token.
 1374 
 1375   Sets the 16-bit value for the token specified by TokenNumber
 1376   to the value specified by Value.  Value is returned.
 1377 
 1378   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1379   @param[in]  Value         The 16-bit value to set.
 1380 
 1381   @return Return the Value that was set.
 1382 
 1383 **/
 1384 UINT16
 1385 EFIAPI
 1386 LibPcdSet16 (
 1387   IN UINTN             TokenNumber,
 1388   IN UINT16            Value
 1389   );
 1390 
 1391 
 1392 /**
 1393   This function provides a means by which to set a value for a given PCD token.
 1394 
 1395   Sets the 32-bit value for the token specified by TokenNumber
 1396   to the value specified by Value.  Value is returned.
 1397 
 1398   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1399   @param[in]  Value         The 32-bit value to set.
 1400 
 1401   @return Return the Value that was set.
 1402 
 1403 **/
 1404 UINT32
 1405 EFIAPI
 1406 LibPcdSet32 (
 1407   IN UINTN             TokenNumber,
 1408   IN UINT32            Value
 1409   );
 1410 
 1411 
 1412 /**
 1413   This function provides a means by which to set a value for a given PCD token.
 1414 
 1415   Sets the 64-bit value for the token specified by TokenNumber
 1416   to the value specified by Value.  Value is returned.
 1417 
 1418   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1419   @param[in]  Value         The 64-bit value to set.
 1420 
 1421   @return Return the Value that was set.
 1422 
 1423 **/
 1424 UINT64
 1425 EFIAPI
 1426 LibPcdSet64 (
 1427   IN UINTN             TokenNumber,
 1428   IN UINT64            Value
 1429   );
 1430 
 1431 
 1432 /**
 1433   This function provides a means by which to set a value for a given PCD token.
 1434 
 1435   Sets a buffer for the token specified by TokenNumber to the value
 1436   specified by Buffer and SizeOfBuffer.  Buffer is returned.
 1437   If SizeOfBuffer is greater than the maximum size support by TokenNumber,
 1438   then set SizeOfBuffer to the maximum size supported by TokenNumber and
 1439   return NULL to indicate that the set operation was not actually performed.
 1440 
 1441   If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the
 1442   maximum size supported by TokenName and NULL must be returned.
 1443 
 1444   If SizeOfBuffer is NULL, then ASSERT().
 1445   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
 1446 
 1447   @param[in]      TokenNumber   The PCD token number to set a current value for.
 1448   @param[in, out] SizeOfBuffer  The size, in bytes, of Buffer.
 1449   @param[in]      Buffer        A pointer to the buffer to set.
 1450 
 1451   @return Return the pointer for the Buffer that was set.
 1452 
 1453 **/
 1454 VOID *
 1455 EFIAPI
 1456 LibPcdSetPtr (
 1457   IN        UINTN             TokenNumber,
 1458   IN OUT    UINTN             *SizeOfBuffer,
 1459   IN CONST  VOID              *Buffer
 1460   );
 1461 
 1462 
 1463 /**
 1464   This function provides a means by which to set a value for a given PCD token.
 1465 
 1466   Sets the Boolean value for the token specified by TokenNumber
 1467   to the value specified by Value.  Value is returned.
 1468 
 1469   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1470   @param[in]  Value         The boolean value to set.
 1471 
 1472   @return Return the Value that was set.
 1473 
 1474 **/
 1475 BOOLEAN
 1476 EFIAPI
 1477 LibPcdSetBool (
 1478   IN UINTN             TokenNumber,
 1479   IN BOOLEAN           Value
 1480   );
 1481 
 1482 
 1483 /**
 1484   This function provides a means by which to set a value for a given PCD token.
 1485 
 1486   Sets the 8-bit value for the token specified by TokenNumber and
 1487   Guid to the value specified by Value. Value is returned.
 1488 
 1489   If Guid is NULL, then ASSERT().
 1490 
 1491   @param[in]  Guid          Pointer to a 128-bit unique value that
 1492                             designates which namespace to set a value from.
 1493   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1494   @param[in]  Value         The 8-bit value to set.
 1495 
 1496   @return Return the Value that was set.
 1497 
 1498 **/
 1499 UINT8
 1500 EFIAPI
 1501 LibPcdSetEx8 (
 1502   IN CONST GUID        *Guid,
 1503   IN UINTN             TokenNumber,
 1504   IN UINT8             Value
 1505   );
 1506 
 1507 
 1508 /**
 1509   This function provides a means by which to set a value for a given PCD token.
 1510 
 1511   Sets the 16-bit value for the token specified by TokenNumber and
 1512   Guid to the value specified by Value. Value is returned.
 1513 
 1514   If Guid is NULL, then ASSERT().
 1515 
 1516   @param[in]  Guid          Pointer to a 128-bit unique value that
 1517                             designates which namespace to set a value from.
 1518   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1519   @param[in]  Value         The 16-bit value to set.
 1520 
 1521   @return Return the Value that was set.
 1522 
 1523 **/
 1524 UINT16
 1525 EFIAPI
 1526 LibPcdSetEx16 (
 1527   IN CONST GUID        *Guid,
 1528   IN UINTN             TokenNumber,
 1529   IN UINT16            Value
 1530   );
 1531 
 1532 
 1533 /**
 1534   This function provides a means by which to set a value for a given PCD token.
 1535 
 1536   Sets the 32-bit value for the token specified by TokenNumber and
 1537   Guid to the value specified by Value. Value is returned.
 1538 
 1539   If Guid is NULL, then ASSERT().
 1540 
 1541   @param[in]  Guid          Pointer to a 128-bit unique value that
 1542                             designates which namespace to set a value from.
 1543   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1544   @param[in]  Value         The 32-bit value to set.
 1545 
 1546   @return Return the Value that was set.
 1547 
 1548 **/
 1549 UINT32
 1550 EFIAPI
 1551 LibPcdSetEx32 (
 1552   IN CONST GUID        *Guid,
 1553   IN UINTN             TokenNumber,
 1554   IN UINT32            Value
 1555   );
 1556 
 1557 
 1558 /**
 1559   This function provides a means by which to set a value for a given PCD token.
 1560 
 1561   Sets the 64-bit value for the token specified by TokenNumber and
 1562   Guid to the value specified by Value. Value is returned.
 1563 
 1564   If Guid is NULL, then ASSERT().
 1565 
 1566   @param[in]  Guid          Pointer to a 128-bit unique value that
 1567                             designates which namespace to set a value from.
 1568   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1569   @param[in]  Value         The 64-bit value to set.
 1570 
 1571   @return Return the Value that was set.
 1572 
 1573 **/
 1574 UINT64
 1575 EFIAPI
 1576 LibPcdSetEx64 (
 1577   IN CONST GUID        *Guid,
 1578   IN UINTN             TokenNumber,
 1579   IN UINT64            Value
 1580   );
 1581 
 1582 
 1583 /**
 1584   This function provides a means by which to set a value for a given PCD token.
 1585 
 1586   Sets a buffer for the token specified by TokenNumber to the value specified by
 1587   Buffer and SizeOfBuffer.  Buffer is returned.  If SizeOfBuffer is greater than
 1588   the maximum size support by TokenNumber, then set SizeOfBuffer to the maximum size
 1589   supported by TokenNumber and return NULL to indicate that the set operation
 1590   was not actually performed.
 1591 
 1592   If Guid is NULL, then ASSERT().
 1593   If SizeOfBuffer is NULL, then ASSERT().
 1594   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
 1595 
 1596   @param[in]  Guid              Pointer to a 128-bit unique value that
 1597                                 designates which namespace to set a value from.
 1598   @param[in]  TokenNumber       The PCD token number to set a current value for.
 1599   @param[in, out] SizeOfBuffer  The size, in bytes, of Buffer.
 1600   @param[in]  Buffer            A pointer to the buffer to set.
 1601 
 1602   @return Return the pointer to the Buffer that was set.
 1603 
 1604 **/
 1605 VOID *
 1606 EFIAPI
 1607 LibPcdSetExPtr (
 1608   IN      CONST GUID        *Guid,
 1609   IN      UINTN             TokenNumber,
 1610   IN OUT  UINTN             *SizeOfBuffer,
 1611   IN      VOID              *Buffer
 1612   );
 1613 
 1614 
 1615 /**
 1616   This function provides a means by which to set a value for a given PCD token.
 1617 
 1618   Sets the Boolean value for the token specified by TokenNumber and
 1619   Guid to the value specified by Value. Value is returned.
 1620 
 1621   If Guid is NULL, then ASSERT().
 1622 
 1623   @param[in]  Guid          Pointer to a 128-bit unique value that
 1624                             designates which namespace to set a value from.
 1625   @param[in]  TokenNumber   The PCD token number to set a current value for.
 1626   @param[in]  Value         The Boolean value to set.
 1627 
 1628   @return Return the Value that was set.
 1629 
 1630 **/
 1631 BOOLEAN
 1632 EFIAPI
 1633 LibPcdSetExBool (
 1634   IN CONST GUID        *Guid,
 1635   IN UINTN             TokenNumber,
 1636   IN BOOLEAN           Value
 1637   );
 1638 #endif
 1639 
 1640 /**
 1641   This function provides a means by which to set a value for a given PCD token.
 1642 
 1643   Sets the 8-bit value for the token specified by TokenNumber
 1644   to the value specified by Value.
 1645 
 1646   @param[in] TokenNumber    The PCD token number to set a current value for.
 1647   @param[in] Value          The 8-bit value to set.
 1648 
 1649   @return The status of the set operation.
 1650 
 1651 **/
 1652 RETURN_STATUS
 1653 EFIAPI
 1654 LibPcdSet8S (
 1655   IN UINTN          TokenNumber,
 1656   IN UINT8          Value
 1657   );
 1658 
 1659 /**
 1660   This function provides a means by which to set a value for a given PCD token.
 1661 
 1662   Sets the 16-bit value for the token specified by TokenNumber
 1663   to the value specified by Value.
 1664 
 1665   @param[in] TokenNumber    The PCD token number to set a current value for.
 1666   @param[in] Value          The 16-bit value to set.
 1667 
 1668   @return The status of the set operation.
 1669 
 1670 **/
 1671 RETURN_STATUS
 1672 EFIAPI
 1673 LibPcdSet16S (
 1674   IN UINTN          TokenNumber,
 1675   IN UINT16         Value
 1676   );
 1677 
 1678 /**
 1679   This function provides a means by which to set a value for a given PCD token.
 1680 
 1681   Sets the 32-bit value for the token specified by TokenNumber
 1682   to the value specified by Value.
 1683 
 1684   @param[in] TokenNumber    The PCD token number to set a current value for.
 1685   @param[in] Value          The 32-bit value to set.
 1686 
 1687   @return The status of the set operation.
 1688 
 1689 **/
 1690 RETURN_STATUS
 1691 EFIAPI
 1692 LibPcdSet32S (
 1693   IN UINTN          TokenNumber,
 1694   IN UINT32         Value
 1695   );
 1696 
 1697 /**
 1698   This function provides a means by which to set a value for a given PCD token.
 1699 
 1700   Sets the 64-bit value for the token specified by TokenNumber
 1701   to the value specified by Value.
 1702 
 1703   @param[in] TokenNumber    The PCD token number to set a current value for.
 1704   @param[in] Value          The 64-bit value to set.
 1705 
 1706   @return The status of the set operation.
 1707 
 1708 **/
 1709 RETURN_STATUS
 1710 EFIAPI
 1711 LibPcdSet64S (
 1712   IN UINTN          TokenNumber,
 1713   IN UINT64         Value
 1714   );
 1715 
 1716 /**
 1717   This function provides a means by which to set a value for a given PCD token.
 1718 
 1719   Sets a buffer for the token specified by TokenNumber to the value specified
 1720   by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size
 1721   support by TokenNumber, then set SizeOfBuffer to the maximum size supported by
 1722   TokenNumber and return RETURN_INVALID_PARAMETER to indicate that the set operation
 1723   was not actually performed.
 1724 
 1725   If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the
 1726   maximum size supported by TokenName and RETURN_INVALID_PARAMETER must be returned.
 1727 
 1728   If SizeOfBuffer is NULL, then ASSERT().
 1729   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
 1730 
 1731   @param[in]      TokenNumber   The PCD token number to set a current value for.
 1732   @param[in, out] SizeOfBuffer  The size, in bytes, of Buffer.
 1733   @param[in]      Buffer        A pointer to the buffer to set.
 1734 
 1735   @return The status of the set operation.
 1736 
 1737 **/
 1738 RETURN_STATUS
 1739 EFIAPI
 1740 LibPcdSetPtrS (
 1741   IN       UINTN    TokenNumber,
 1742   IN OUT   UINTN    *SizeOfBuffer,
 1743   IN CONST VOID     *Buffer
 1744   );
 1745 
 1746 /**
 1747   This function provides a means by which to set a value for a given PCD token.
 1748 
 1749   Sets the boolean value for the token specified by TokenNumber
 1750   to the value specified by Value.
 1751 
 1752   @param[in] TokenNumber    The PCD token number to set a current value for.
 1753   @param[in] Value          The boolean value to set.
 1754 
 1755   @return The status of the set operation.
 1756 
 1757 **/
 1758 RETURN_STATUS
 1759 EFIAPI
 1760 LibPcdSetBoolS (
 1761   IN UINTN          TokenNumber,
 1762   IN BOOLEAN        Value
 1763   );
 1764 
 1765 /**
 1766   This function provides a means by which to set a value for a given PCD token.
 1767 
 1768   Sets the 8-bit value for the token specified by TokenNumber
 1769   to the value specified by Value.
 1770 
 1771   If Guid is NULL, then ASSERT().
 1772 
 1773   @param[in] Guid           The pointer to a 128-bit unique value that
 1774                             designates which namespace to set a value from.
 1775   @param[in] TokenNumber    The PCD token number to set a current value for.
 1776   @param[in] Value          The 8-bit value to set.
 1777 
 1778   @return The status of the set operation.
 1779 
 1780 **/
 1781 RETURN_STATUS
 1782 EFIAPI
 1783 LibPcdSetEx8S (
 1784   IN CONST GUID     *Guid,
 1785   IN UINTN          TokenNumber,
 1786   IN UINT8          Value
 1787   );
 1788 
 1789 /**
 1790   This function provides a means by which to set a value for a given PCD token.
 1791 
 1792   Sets the 16-bit value for the token specified by TokenNumber
 1793   to the value specified by Value.
 1794 
 1795   If Guid is NULL, then ASSERT().
 1796 
 1797   @param[in] Guid           The pointer to a 128-bit unique value that
 1798                             designates which namespace to set a value from.
 1799   @param[in] TokenNumber    The PCD token number to set a current value for.
 1800   @param[in] Value          The 16-bit value to set.
 1801 
 1802   @return The status of the set operation.
 1803 
 1804 **/
 1805 RETURN_STATUS
 1806 EFIAPI
 1807 LibPcdSetEx16S (
 1808   IN CONST GUID     *Guid,
 1809   IN UINTN          TokenNumber,
 1810   IN UINT16         Value
 1811   );
 1812 
 1813 /**
 1814   This function provides a means by which to set a value for a given PCD token.
 1815 
 1816   Sets the 32-bit value for the token specified by TokenNumber
 1817   to the value specified by Value.
 1818 
 1819   If Guid is NULL, then ASSERT().
 1820 
 1821   @param[in] Guid           The pointer to a 128-bit unique value that
 1822                             designates which namespace to set a value from.
 1823   @param[in] TokenNumber    The PCD token number to set a current value for.
 1824   @param[in] Value          The 32-bit value to set.
 1825 
 1826   @return The status of the set operation.
 1827 
 1828 **/
 1829 RETURN_STATUS
 1830 EFIAPI
 1831 LibPcdSetEx32S (
 1832   IN CONST GUID     *Guid,
 1833   IN UINTN          TokenNumber,
 1834   IN UINT32         Value
 1835   );
 1836 
 1837 /**
 1838   This function provides a means by which to set a value for a given PCD token.
 1839 
 1840   Sets the 64-bit value for the token specified by TokenNumber
 1841   to the value specified by Value.
 1842 
 1843   If Guid is NULL, then ASSERT().
 1844 
 1845   @param[in] Guid           The pointer to a 128-bit unique value that
 1846                             designates which namespace to set a value from.
 1847   @param[in] TokenNumber    The PCD token number to set a current value for.
 1848   @param[in] Value          The 64-bit value to set.
 1849 
 1850   @return The status of the set operation.
 1851 
 1852 **/
 1853 RETURN_STATUS
 1854 EFIAPI
 1855 LibPcdSetEx64S (
 1856   IN CONST GUID     *Guid,
 1857   IN UINTN          TokenNumber,
 1858   IN UINT64         Value
 1859   );
 1860 
 1861 /**
 1862   This function provides a means by which to set a value for a given PCD token.
 1863 
 1864   Sets a buffer for the token specified by TokenNumber to the value specified by
 1865   Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size
 1866   support by TokenNumber, then set SizeOfBuffer to the maximum size supported by
 1867   TokenNumber and return RETURN_INVALID_PARAMETER to indicate that the set operation
 1868   was not actually performed.
 1869 
 1870   If Guid is NULL, then ASSERT().
 1871   If SizeOfBuffer is NULL, then ASSERT().
 1872   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
 1873 
 1874   @param[in]      Guid          Pointer to a 128-bit unique value that
 1875                                 designates which namespace to set a value from.
 1876   @param[in]      TokenNumber   The PCD token number to set a current value for.
 1877   @param[in, out] SizeOfBuffer  The size, in bytes, of Buffer.
 1878   @param[in]      Buffer        A pointer to the buffer to set.
 1879 
 1880   @return The status of the set operation.
 1881 
 1882 **/
 1883 RETURN_STATUS
 1884 EFIAPI
 1885 LibPcdSetExPtrS (
 1886   IN CONST GUID     *Guid,
 1887   IN       UINTN    TokenNumber,
 1888   IN OUT   UINTN    *SizeOfBuffer,
 1889   IN       VOID     *Buffer
 1890   );
 1891 
 1892 /**
 1893   This function provides a means by which to set a value for a given PCD token.
 1894 
 1895   Sets the boolean value for the token specified by TokenNumber
 1896   to the value specified by Value.
 1897 
 1898   If Guid is NULL, then ASSERT().
 1899 
 1900   @param[in] Guid           The pointer to a 128-bit unique value that
 1901                             designates which namespace to set a value from.
 1902   @param[in] TokenNumber    The PCD token number to set a current value for.
 1903   @param[in] Value          The boolean value to set.
 1904 
 1905   @return The status of the set operation.
 1906 
 1907 **/
 1908 RETURN_STATUS
 1909 EFIAPI
 1910 LibPcdSetExBoolS (
 1911   IN CONST GUID     *Guid,
 1912   IN UINTN          TokenNumber,
 1913   IN BOOLEAN        Value
 1914   );
 1915 
 1916 /**
 1917   This notification function serves two purposes.
 1918 
 1919   Firstly, it notifies the module that did the registration that the value of this
 1920   PCD token has been set.
 1921   Secondly, it provides a mechanism for the module that did the registration to intercept
 1922   the set operation and override the value been set if necessary. After the invocation of
 1923   the callback function, TokenData will be used by PCD service PEIM or driver to modify th
 1924   internal data in PCD database.
 1925 
 1926   @param[in]      CallBackGuid    The PCD token GUID being set.
 1927   @param[in]      CallBackToken   The PCD token number being set.
 1928   @param[in, out] TokenData       A pointer to the token data being set.
 1929   @param[in]      TokenDataSize   The size, in bytes, of the data being set.
 1930 
 1931 **/
 1932 typedef
 1933 VOID
 1934 (EFIAPI *PCD_CALLBACK)(
 1935   IN        CONST GUID        *CallBackGuid, OPTIONAL
 1936   IN        UINTN             CallBackToken,
 1937   IN  OUT   VOID              *TokenData,
 1938   IN        UINTN             TokenDataSize
 1939   );
 1940 
 1941 
 1942 /**
 1943   Set up a notification function that is called when a specified token is set.
 1944 
 1945   When the token specified by TokenNumber and Guid is set,
 1946   then notification function specified by NotificationFunction is called.
 1947   If Guid is NULL, then the default token space is used.
 1948   If NotificationFunction is NULL, then ASSERT().
 1949 
 1950   @param[in]  Guid                  Pointer to a 128-bit unique value that designates which
 1951                                     namespace to set a value from.  If NULL, then the default
 1952                                     token space is used.
 1953   @param[in]  TokenNumber           The PCD token number to monitor.
 1954   @param[in]  NotificationFunction  The function to call when the token
 1955                                     specified by Guid and TokenNumber is set.
 1956 
 1957 **/
 1958 VOID
 1959 EFIAPI
 1960 LibPcdCallbackOnSet (
 1961   IN CONST GUID               *Guid,       OPTIONAL
 1962   IN UINTN                    TokenNumber,
 1963   IN PCD_CALLBACK             NotificationFunction
 1964   );
 1965 
 1966 
 1967 /**
 1968   Disable a notification function that was established with LibPcdCallbackonSet().
 1969 
 1970   Disable a notification function that was previously established with LibPcdCallbackOnSet().
 1971   If NotificationFunction is NULL, then ASSERT().
 1972   If LibPcdCallbackOnSet() was not previously called with Guid, TokenNumber,
 1973   and NotificationFunction, then ASSERT().
 1974 
 1975   @param[in]  Guid                 Specify the GUID token space.
 1976   @param[in]  TokenNumber          Specify the token number.
 1977   @param[in]  NotificationFunction The callback function to be unregistered.
 1978 
 1979 **/
 1980 VOID
 1981 EFIAPI
 1982 LibPcdCancelCallback (
 1983   IN CONST GUID               *Guid,       OPTIONAL
 1984   IN UINTN                    TokenNumber,
 1985   IN PCD_CALLBACK             NotificationFunction
 1986   );
 1987 
 1988 
 1989 /**
 1990   Retrieves the next token in a token space.
 1991 
 1992   Retrieves the next PCD token number from the token space specified by Guid.
 1993   If Guid is NULL, then the default token space is used.  If TokenNumber is 0,
 1994   then the first token number is returned.  Otherwise, the token number that
 1995   follows TokenNumber in the token space is returned.  If TokenNumber is the last
 1996   token number in the token space, then 0 is returned.
 1997 
 1998   If TokenNumber is not 0 and is not in the token space specified by Guid, then ASSERT().
 1999 
 2000   @param[in]  Guid        Pointer to a 128-bit unique value that designates which namespace
 2001                           to set a value from.  If NULL, then the default token space is used.
 2002   @param[in]  TokenNumber The previous PCD token number.  If 0, then retrieves the first PCD
 2003                           token number.
 2004 
 2005   @return The next valid token number.
 2006 
 2007 **/
 2008 UINTN
 2009 EFIAPI
 2010 LibPcdGetNextToken (
 2011   IN CONST GUID               *Guid,       OPTIONAL
 2012   IN UINTN                    TokenNumber
 2013   );
 2014 
 2015 
 2016 
 2017 /**
 2018   Used to retrieve the list of available PCD token space GUIDs.
 2019 
 2020   Returns the PCD token space GUID that follows TokenSpaceGuid in the list of token spaces
 2021   in the platform.
 2022   If TokenSpaceGuid is NULL, then a pointer to the first PCD token spaces returned.
 2023   If TokenSpaceGuid is the last PCD token space GUID in the list, then NULL is returned.
 2024 
 2025   @param  TokenSpaceGuid  Pointer to the a PCD token space GUID
 2026 
 2027   @return The next valid token namespace.
 2028 
 2029 **/
 2030 GUID *
 2031 EFIAPI
 2032 LibPcdGetNextTokenSpace (
 2033   IN CONST GUID  *TokenSpaceGuid
 2034   );
 2035 
 2036 
 2037 /**
 2038   Sets a value of a patchable PCD entry that is type pointer.
 2039 
 2040   Sets the PCD entry specified by PatchVariable to the value specified by Buffer
 2041   and SizeOfBuffer.  Buffer is returned.  If SizeOfBuffer is greater than
 2042   MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return
 2043   NULL to indicate that the set operation was not actually performed.
 2044   If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
 2045   MaximumDatumSize and NULL must be returned.
 2046 
 2047   If PatchVariable is NULL, then ASSERT().
 2048   If SizeOfBuffer is NULL, then ASSERT().
 2049   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
 2050 
 2051   @param[out] PatchVariable     A pointer to the global variable in a module that is
 2052                                 the target of the set operation.
 2053   @param[in] MaximumDatumSize   The maximum size allowed for the PCD entry specified by PatchVariable.
 2054   @param[in, out] SizeOfBuffer  A pointer to the size, in bytes, of Buffer.
 2055   @param[in] Buffer             A pointer to the buffer to used to set the target variable.
 2056 
 2057   @return Return the pointer to the Buffer that was set.
 2058 
 2059 **/
 2060 VOID *
 2061 EFIAPI
 2062 LibPatchPcdSetPtr (
 2063   OUT        VOID       *PatchVariable,
 2064   IN        UINTN       MaximumDatumSize,
 2065   IN OUT    UINTN       *SizeOfBuffer,
 2066   IN CONST  VOID        *Buffer
 2067   );
 2068 
 2069 /**
 2070   Sets a value of a patchable PCD entry that is type pointer.
 2071 
 2072   Sets the PCD entry specified by PatchVariable to the value specified
 2073   by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize,
 2074   then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER
 2075   to indicate that the set operation was not actually performed.
 2076   If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
 2077   MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned.
 2078 
 2079   If PatchVariable is NULL, then ASSERT().
 2080   If SizeOfBuffer is NULL, then ASSERT().
 2081   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
 2082 
 2083   @param[out] PatchVariable     A pointer to the global variable in a module that is
 2084                                 the target of the set operation.
 2085   @param[in] MaximumDatumSize   The maximum size allowed for the PCD entry specified by PatchVariable.
 2086   @param[in, out] SizeOfBuffer  A pointer to the size, in bytes, of Buffer.
 2087   @param[in] Buffer             A pointer to the buffer to used to set the target variable.
 2088 
 2089   @return The status of the set operation.
 2090 
 2091 **/
 2092 RETURN_STATUS
 2093 EFIAPI
 2094 LibPatchPcdSetPtrS (
 2095   OUT      VOID     *PatchVariable,
 2096   IN       UINTN    MaximumDatumSize,
 2097   IN OUT   UINTN    *SizeOfBuffer,
 2098   IN CONST VOID     *Buffer
 2099   );
 2100 
 2101 /**
 2102   Sets a value and size of a patchable PCD entry that is type pointer.
 2103 
 2104   Sets the PCD entry specified by PatchVariable to the value specified by Buffer
 2105   and SizeOfBuffer. Buffer is returned.  If SizeOfBuffer is greater than
 2106   MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return
 2107   NULL to indicate that the set operation was not actually performed.
 2108   If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
 2109   MaximumDatumSize and NULL must be returned.
 2110 
 2111   If PatchVariable is NULL, then ASSERT().
 2112   If SizeOfPatchVariable is NULL, then ASSERT().
 2113   If SizeOfBuffer is NULL, then ASSERT().
 2114   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
 2115 
 2116   @param[out] PatchVariable     A pointer to the global variable in a module that is
 2117                                 the target of the set operation.
 2118   @param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable.
 2119   @param[in] MaximumDatumSize   The maximum size allowed for the PCD entry specified by PatchVariable.
 2120   @param[in, out] SizeOfBuffer  A pointer to the size, in bytes, of Buffer.
 2121   @param[in] Buffer             A pointer to the buffer to used to set the target variable.
 2122 
 2123   @return Return the pointer to the Buffer that was set.
 2124 
 2125 **/
 2126 VOID *
 2127 EFIAPI
 2128 LibPatchPcdSetPtrAndSize (
 2129   OUT       VOID        *PatchVariable,
 2130   OUT       UINTN       *SizeOfPatchVariable,
 2131   IN        UINTN       MaximumDatumSize,
 2132   IN OUT    UINTN       *SizeOfBuffer,
 2133   IN CONST  VOID        *Buffer
 2134   );
 2135 
 2136 /**
 2137   Sets a value and size of a patchable PCD entry that is type pointer.
 2138 
 2139   Sets the PCD entry specified by PatchVariable to the value specified
 2140   by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize,
 2141   then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER
 2142   to indicate that the set operation was not actually performed.
 2143   If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
 2144   MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned.
 2145 
 2146   If PatchVariable is NULL, then ASSERT().
 2147   If SizeOfPatchVariable is NULL, then ASSERT().
 2148   If SizeOfBuffer is NULL, then ASSERT().
 2149   If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
 2150 
 2151   @param[out] PatchVariable     A pointer to the global variable in a module that is
 2152                                 the target of the set operation.
 2153   @param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable.
 2154   @param[in] MaximumDatumSize   The maximum size allowed for the PCD entry specified by PatchVariable.
 2155   @param[in, out] SizeOfBuffer  A pointer to the size, in bytes, of Buffer.
 2156   @param[in] Buffer             A pointer to the buffer to used to set the target variable.
 2157 
 2158   @return The status of the set operation.
 2159 
 2160 **/
 2161 RETURN_STATUS
 2162 EFIAPI
 2163 LibPatchPcdSetPtrAndSizeS (
 2164   OUT      VOID     *PatchVariable,
 2165   OUT      UINTN    *SizeOfPatchVariable,
 2166   IN       UINTN    MaximumDatumSize,
 2167   IN OUT   UINTN    *SizeOfBuffer,
 2168   IN CONST VOID     *Buffer
 2169   );
 2170 
 2171 typedef enum {
 2172   PCD_TYPE_8,
 2173   PCD_TYPE_16,
 2174   PCD_TYPE_32,
 2175   PCD_TYPE_64,
 2176   PCD_TYPE_BOOL,
 2177   PCD_TYPE_PTR
 2178 } PCD_TYPE;
 2179 
 2180 typedef struct {
 2181   ///
 2182   /// The returned information associated with the requested TokenNumber. If
 2183   /// TokenNumber is 0, then PcdType is set to PCD_TYPE_8.
 2184   ///
 2185   PCD_TYPE          PcdType;
 2186   ///
 2187   /// The size of the data in bytes associated with the TokenNumber specified. If
 2188   /// TokenNumber is 0, then PcdSize is set 0.
 2189   ///
 2190   UINTN             PcdSize;
 2191   ///
 2192   /// The null-terminated ASCII string associated with a given token. If the
 2193   /// TokenNumber specified was 0, then this field corresponds to the null-terminated
 2194   /// ASCII string associated with the token's namespace Guid. If NULL, there is no
 2195   /// name associated with this request.
 2196   ///
 2197   CHAR8             *PcdName;
 2198 } PCD_INFO;
 2199 
 2200 
 2201 /**
 2202   Retrieve additional information associated with a PCD token.
 2203 
 2204   This includes information such as the type of value the TokenNumber is associated with as well as possible
 2205   human readable name that is associated with the token.
 2206 
 2207   If TokenNumber is not in the default token space specified, then ASSERT().
 2208 
 2209   @param[in]    TokenNumber The PCD token number.
 2210   @param[out]   PcdInfo     The returned information associated with the requested TokenNumber.
 2211                             The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
 2212 **/
 2213 VOID
 2214 EFIAPI
 2215 LibPcdGetInfo (
 2216   IN        UINTN           TokenNumber,
 2217   OUT       PCD_INFO        *PcdInfo
 2218   );
 2219 
 2220 /**
 2221   Retrieve additional information associated with a PCD token.
 2222 
 2223   This includes information such as the type of value the TokenNumber is associated with as well as possible
 2224   human readable name that is associated with the token.
 2225 
 2226   If TokenNumber is not in the token space specified by Guid, then ASSERT().
 2227 
 2228   @param[in]    Guid        The 128-bit unique value that designates the namespace from which to extract the value.
 2229   @param[in]    TokenNumber The PCD token number.
 2230   @param[out]   PcdInfo     The returned information associated with the requested TokenNumber.
 2231                             The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
 2232 **/
 2233 VOID
 2234 EFIAPI
 2235 LibPcdGetInfoEx (
 2236   IN CONST  GUID            *Guid,
 2237   IN        UINTN           TokenNumber,
 2238   OUT       PCD_INFO        *PcdInfo
 2239   );
 2240 
 2241 /**
 2242   Retrieve the currently set SKU Id.
 2243 
 2244   @return   The currently set SKU Id. If the platform has not set at a SKU Id, then the
 2245             default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
 2246             Id is returned.
 2247 **/
 2248 UINTN
 2249 EFIAPI
 2250 LibPcdGetSku (
 2251   VOID
 2252   );
 2253 
 2254 #endif

Cache object: 376c7749c9fdaf19b55f84d506c2ac64


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.