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