]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Library/PcdLib.h
MdePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdePkg / Include / Library / PcdLib.h
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