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