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