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 2255