]> git.proxmox.com Git - mirror_edk2.git/blob - MdePkg/Include/Library/PcdLib.h
MdePkg/BaseLib: Add safe string functions that convert str to value
[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 - 2016, 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 If TokenName is not a feature flag, then the module will not build.
38
39 @param TokenName The name of the PCD token to retrieve the token number for.
40
41 @return The token number associated with the PCD.
42
43 **/
44 #define PcdToken(TokenName) _PCD_TOKEN_##TokenName
45
46
47 /**
48 Retrieves a Boolean PCD feature flag based on a token name.
49
50 Returns the Boolean value for the PCD feature flag specified by TokenName.
51 If TokenName is not a valid token in the token space, then the module will not build.
52 If TokenName is not a feature flag, then the module will not build.
53
54 @param TokenName The name of the PCD token to retrieve a current value for.
55
56 @return Boolean value for the PCD feature flag.
57
58 **/
59 #define FeaturePcdGet(TokenName) _PCD_GET_MODE_BOOL_##TokenName
60
61
62 /**
63 Retrieves an 8-bit fixed PCD token value based on a token name.
64
65 Returns the 8-bit value for the token specified by TokenName.
66 If TokenName is not a valid token in the token space, then the module will not build.
67 If TokenName is not a feature flag, then the module will not build.
68
69 @param TokenName The name of the PCD token to retrieve a current value for.
70
71 @return 8-bit value for the token specified by TokenName.
72
73 **/
74 #define FixedPcdGet8(TokenName) _PCD_VALUE_##TokenName
75
76
77 /**
78 Retrieves a 16-bit fixed PCD token value based on a token name.
79
80 Returns the 16-bit value for the token specified by TokenName.
81 If TokenName is not a valid token in the token space, then the module will not build.
82 If TokenName is not a feature flag, then the module will not build.
83
84 @param TokenName The name of the PCD token to retrieve a current value for.
85
86 @return 16-bit value for the token specified by TokenName.
87
88 **/
89 #define FixedPcdGet16(TokenName) _PCD_VALUE_##TokenName
90
91
92 /**
93 Retrieves a 32-bit fixed PCD token value based on a token name.
94
95 Returns the 32-bit value for the token specified by TokenName.
96 If TokenName is not a valid token in the token space, then the module will not build.
97 If TokenName is not a feature flag, then the module will not build.
98
99 @param TokenName The name of the PCD token to retrieve a current value for.
100
101 @return 32-bit value for the token specified by TokenName.
102
103 **/
104 #define FixedPcdGet32(TokenName) _PCD_VALUE_##TokenName
105
106
107 /**
108 Retrieves a 64-bit fixed PCD token value based on a token name.
109
110 Returns the 64-bit value for the token specified by TokenName.
111 If TokenName is not a valid token in the token space, then the module will not build.
112 If TokenName is not a feature flag, then the module will not build.
113
114 @param TokenName The name of the PCD token to retrieve a current value for.
115
116 @return 64-bit value for the token specified by TokenName.
117
118 **/
119 #define FixedPcdGet64(TokenName) _PCD_VALUE_##TokenName
120
121
122 /**
123 Retrieves a Boolean fixed PCD token value based on a token name.
124
125 Returns the Boolean value for the token specified by TokenName.
126 If TokenName is not a valid token in the token space, then the module will not build.
127 If TokenName is not a feature flag, then the module will not build.
128
129 @param TokenName The name of the PCD token to retrieve a current value for.
130
131 @return The Boolean value for the token.
132
133 **/
134 #define FixedPcdGetBool(TokenName) _PCD_VALUE_##TokenName
135
136
137 /**
138 Retrieves a pointer to a fixed PCD token buffer based on a token name.
139
140 Returns a pointer to the buffer for the token specified by TokenName.
141 If TokenName is not a valid token in the token space, then the module will not build.
142 If TokenName is not a feature flag, then the module will not build.
143
144 @param TokenName The name of the PCD token to retrieve a current value for.
145
146 @return A pointer to the buffer.
147
148 **/
149 #define FixedPcdGetPtr(TokenName) ((VOID *)_PCD_VALUE_##TokenName)
150
151
152 /**
153 Retrieves an 8-bit binary patchable PCD token value based on a token name.
154
155 Returns the 8-bit value for the token specified by TokenName.
156 If TokenName is not a valid token in the token space, then the module will not build.
157 If TokenName is not a feature flag, then the module will not build.
158
159 @param TokenName The name of the PCD token to retrieve a current value for.
160
161 @return An 8-bit binary patchable PCD token value.
162
163 **/
164 #define PatchPcdGet8(TokenName) _gPcd_BinaryPatch_##TokenName
165
166 /**
167 Retrieves a 16-bit binary patchable PCD token value based on a token name.
168
169 Returns the 16-bit value for the token specified by TokenName.
170 If TokenName is not a valid token in the token space, then the module will not build.
171 If TokenName is not a feature flag, then the module will not build.
172
173 @param TokenName The name of the PCD token to retrieve a current value for.
174
175 @return A 16-bit binary patchable PCD token value.
176
177 **/
178 #define PatchPcdGet16(TokenName) _gPcd_BinaryPatch_##TokenName
179
180
181 /**
182 Retrieves a 32-bit binary patchable PCD token value based on a token name.
183
184 Returns the 32-bit value for the token specified by TokenName.
185 If TokenName is not a valid token in the token space, then the module will not build.
186 If TokenName is not a feature flag, then the module will not build.
187
188 @param TokenName The name of the PCD token to retrieve a current value for.
189
190 @return A 32-bit binary patchable PCD token value.
191
192 **/
193 #define PatchPcdGet32(TokenName) _gPcd_BinaryPatch_##TokenName
194
195
196 /**
197 Retrieves a 64-bit binary patchable PCD token value based on a token name.
198
199 Returns the 64-bit value for the token specified by TokenName.
200 If TokenName is not a valid token in the token space, then the module will not build.
201 If TokenName is not a feature flag, then the module will not build.
202
203 @param TokenName The name of the PCD token to retrieve a current value for.
204
205 @return A 64-bit binary patchable PCD token value.
206
207 **/
208 #define PatchPcdGet64(TokenName) _gPcd_BinaryPatch_##TokenName
209
210
211 /**
212 Retrieves a Boolean binary patchable PCD token value based on a token name.
213
214 Returns the Boolean value for the token specified by TokenName.
215 If TokenName is not a valid token in the token space, then the module will not build.
216 If TokenName is not a feature flag, then the module will not build.
217
218 @param TokenName The name of the PCD token to retrieve a current value for.
219
220 @return The Boolean value for the token.
221
222 **/
223 #define PatchPcdGetBool(TokenName) _gPcd_BinaryPatch_##TokenName
224
225
226 /**
227 Retrieves a pointer to a binary patchable PCD token buffer based on a token name.
228
229 Returns a pointer to the buffer for the token specified by TokenName.
230 If TokenName is not a valid token in the token space, then the module will not build.
231 If TokenName is not a feature flag, then the module will not build.
232
233 @param TokenName The name of the PCD token to retrieve a current value for.
234
235 @return A pointer to the buffer for the token.
236
237 **/
238 #define PatchPcdGetPtr(TokenName) ((VOID *)_gPcd_BinaryPatch_##TokenName)
239
240
241 /**
242 Sets an 8-bit binary patchable PCD token value based on a token name.
243
244 Sets the 8-bit value for the token specified by TokenName. Value is returned.
245 If TokenName is not a valid token in the token space, then the module will not build.
246 If TokenName is not a feature flag, then the module will not build.
247
248 @param TokenName The name of the binary patchable PCD token to set the current value for.
249 @param Value The 8-bit value to set.
250
251 @return Return the Value that was set.
252
253 **/
254 #define PatchPcdSet8(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
255
256
257 /**
258 Sets a 16-bit binary patchable PCD token value based on a token name.
259
260 Sets the 16-bit value for the token specified by TokenName. Value is returned.
261 If TokenName is not a valid token in the token space, then the module will not build.
262 If TokenName is not a feature flag, then the module will not build.
263
264 @param TokenName The name of the binary patchable PCD token to set the current value for.
265 @param Value The 16-bit value to set.
266
267 @return Return the Value that was set.
268
269 **/
270 #define PatchPcdSet16(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
271
272
273 /**
274 Sets a 32-bit binary patchable PCD token value based on a token name.
275
276 Sets the 32-bit value for the token specified by TokenName. Value is returned.
277 If TokenName is not a valid token in the token space, then the module will not build.
278 If TokenName is not a feature flag, then the module will not build.
279
280 @param TokenName The name of the binary patchable PCD token to set the current value for.
281 @param Value The 32-bit value to set.
282
283 @return Return the Value that was set.
284
285 **/
286 #define PatchPcdSet32(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
287
288
289 /**
290 Sets a 64-bit binary patchable PCD token value based on a token name.
291
292 Sets the 64-bit value for the token specified by TokenName. Value is returned.
293 If TokenName is not a valid token in the token space, then the module will not build.
294 If TokenName is not a feature flag, then the module will not build.
295
296 @param TokenName The name of the binary patchable PCD token to set the current value for.
297 @param Value The 64-bit value to set.
298
299 @return Return the Value that was set.
300
301 **/
302 #define PatchPcdSet64(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
303
304
305 /**
306 Sets a Boolean binary patchable PCD token value based on a token name.
307
308 Sets the Boolean value for the token specified by TokenName. Value is returned.
309 If TokenName is not a valid token in the token space, then the module will not build.
310 If TokenName is not a feature flag, then the module will not build.
311
312 @param TokenName The name of the binary patchable PCD token to set the current value for.
313 @param Value The boolean value to set.
314
315 @return Return the Value that was set.
316
317 **/
318 #define PatchPcdSetBool(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
319
320
321 /**
322 Sets a pointer to a binary patchable PCD token buffer based on a token name.
323
324 Sets the buffer for the token specified by TokenName. Buffer is returned.
325 If SizeOfBuffer is greater than the maximum size supported by TokenName, then set SizeOfBuffer
326 to the maximum size supported by TokenName and return NULL to indicate that the set operation
327 was not actually performed. If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be
328 set to the maximum size supported by TokenName and NULL must be returned.
329 If TokenName is not a valid token in the token space, then the module will not build.
330 If TokenName is not a feature flag, then the module will not build.
331
332 If SizeOfBuffer is NULL, then ASSERT().
333 If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
334
335 @param TokenName The name of the binary patchable PCD token to set the current value for.
336 @param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
337 @param Buffer Pointer to the value to set.
338
339 @return Return the pointer to the Buffer that was set.
340
341 **/
342 #define PatchPcdSetPtr(TokenName, Size, Buffer) \
343 LibPatchPcdSetPtrAndSize ( \
344 (VOID *)_gPcd_BinaryPatch_##TokenName, \
345 &_gPcd_BinaryPatch_Size_##TokenName, \
346 (UINTN)_PCD_PATCHABLE_##TokenName##_SIZE, \
347 (Size), \
348 (Buffer) \
349 )
350 /**
351 Retrieves an 8-bit PCD token value based on a token name.
352
353 Returns the 8-bit value for the token specified by TokenName.
354 If TokenName is not a valid token in the token space, then the module will not build.
355
356 @param TokenName The name of the PCD token to retrieve a current value for.
357
358 @return 8-bit value for the token specified by TokenName.
359
360 **/
361 #define PcdGet8(TokenName) _PCD_GET_MODE_8_##TokenName
362
363
364 /**
365 Retrieves a 16-bit PCD token value based on a token name.
366
367 Returns the 16-bit value for the token specified by TokenName.
368 If TokenName is not a valid token in the token space, then the module will not build.
369
370 @param TokenName The name of the PCD token to retrieve a current value for.
371
372 @return 16-bit value for the token specified by TokenName.
373
374 **/
375 #define PcdGet16(TokenName) _PCD_GET_MODE_16_##TokenName
376
377
378 /**
379 Retrieves a 32-bit PCD token value based on a token name.
380
381 Returns the 32-bit value for the token specified by TokenName.
382 If TokenName is not a valid token in the token space, then the module will not build.
383
384 @param TokenName The name of the PCD token to retrieve a current value for.
385
386 @return 32-bit value for the token specified by TokenName.
387
388 **/
389 #define PcdGet32(TokenName) _PCD_GET_MODE_32_##TokenName
390
391
392 /**
393 Retrieves a 64-bit PCD token value based on a token name.
394
395 Returns the 64-bit value for the token specified by TokenName.
396 If TokenName is not a valid token in the token space, then the module will not build.
397
398 @param TokenName The name of the PCD token to retrieve a current value for.
399
400 @return 64-bit value for the token specified by TokenName.
401
402 **/
403 #define PcdGet64(TokenName) _PCD_GET_MODE_64_##TokenName
404
405
406 /**
407 Retrieves a pointer to a PCD token buffer based on a token name.
408
409 Returns a pointer to the buffer for the token specified by TokenName.
410 If TokenName is not a valid token in the token space, then the module will not build.
411
412 @param TokenName The name of the PCD token to retrieve a current value for.
413
414 @return A pointer to the buffer.
415
416 **/
417 #define PcdGetPtr(TokenName) _PCD_GET_MODE_PTR_##TokenName
418
419
420 /**
421 Retrieves a Boolean PCD token value based on a token name.
422
423 Returns the Boolean value for the token specified by TokenName.
424 If TokenName is not a valid token in the token space, then the module will not build.
425
426 @param TokenName The name of the PCD token to retrieve a current value for.
427
428 @return A Boolean PCD token value.
429
430 **/
431 #define PcdGetBool(TokenName) _PCD_GET_MODE_BOOL_##TokenName
432
433
434 /**
435 Retrieves the size of a fixed PCD token based on a token name.
436
437 Returns the size of the token specified by TokenName.
438 If TokenName is not a valid token in the token space, then the module will not build.
439
440 @param[in] TokenName The name of the PCD token to retrieve a current value size for.
441
442 @return Return the size
443
444 **/
445 #define FixedPcdGetSize(TokenName) _PCD_SIZE_##TokenName
446
447
448 /**
449 Retrieves the size of a binary patchable PCD token based on a token name.
450
451 Returns the size of the token specified by TokenName.
452 If TokenName is not a valid token in the token space, then the module will not build.
453
454 @param[in] TokenName The name of the PCD token to retrieve a current value size for.
455
456 @return Return the size
457
458 **/
459 #define PatchPcdGetSize(TokenName) _gPcd_BinaryPatch_Size_##TokenName
460
461
462 /**
463 Retrieves the size of the PCD token based on a token name.
464
465 Returns the size of the token specified by TokenName.
466 If TokenName is not a valid token in the token space, then the module will not build.
467
468 @param[in] TokenName The name of the PCD token to retrieve a current value size for.
469
470 @return Return the size
471
472 **/
473 #define PcdGetSize(TokenName) _PCD_GET_MODE_SIZE_##TokenName
474
475
476 /**
477 Retrieve the size of a given PCD token.
478
479 Returns the size of the token specified by TokenNumber and Guid.
480 If Guid is NULL, then ASSERT().
481
482 @param[in] Guid Pointer to a 128-bit unique value that designates
483 which namespace to retrieve a value from.
484 @param[in] TokenNumber The PCD token number to retrieve a current value size for.
485
486 @return Return the size.
487
488 **/
489 #define PcdGetExSize(Guid, TokenName) LibPcdGetExSize ((Guid), PcdTokenEx(Guid,TokenName))
490
491 #ifndef DISABLE_NEW_DEPRECATED_INTERFACES
492 /**
493 Sets an 8-bit PCD token value based on a token name.
494
495 Sets the 8-bit value for the token specified by TokenName. Value is returned.
496 If TokenName is not a valid token in the token space, then the module will not build.
497
498 @param TokenName The name of the PCD token to retrieve a current value for.
499 @param Value The 8-bit value to set.
500
501 @return Return the Value that was set.
502
503 **/
504 #define PcdSet8(TokenName, Value) _PCD_SET_MODE_8_##TokenName ((Value))
505
506
507 /**
508 Sets a 16-bit PCD token value based on a token name.
509
510 Sets the 16-bit value for the token specified by TokenName. Value is returned.
511 If TokenName is not a valid token in the token space, then the module will not build.
512
513 @param TokenName The name of the PCD token to retrieve a current value for.
514 @param Value The 16-bit value to set.
515
516 @return Return the Value that was set.
517
518 **/
519 #define PcdSet16(TokenName, Value) _PCD_SET_MODE_16_##TokenName ((Value))
520
521
522 /**
523 Sets a 32-bit PCD token value based on a token name.
524
525 Sets the 32-bit value for the token specified by TokenName. Value is returned.
526 If TokenName is not a valid token in the token space, then the module will not build.
527
528 @param TokenName The name of the PCD token to retrieve a current value for.
529 @param Value The 32-bit value to set.
530
531 @return Return the Value that was set.
532
533 **/
534 #define PcdSet32(TokenName, Value) _PCD_SET_MODE_32_##TokenName ((Value))
535
536
537 /**
538 Sets a 64-bit PCD token value based on a token name.
539
540 Sets the 64-bit value for the token specified by TokenName. Value is returned.
541 If TokenName is not a valid token in the token space, then the module will not build.
542
543 @param TokenName The name of the PCD token to retrieve a current value for.
544 @param Value The 64-bit value to set.
545
546 @return Return the Value that was set.
547
548 **/
549 #define PcdSet64(TokenName, Value) _PCD_SET_MODE_64_##TokenName ((Value))
550
551
552 /**
553 Sets a pointer to a PCD token buffer based on a token name.
554
555 Sets the buffer for the token specified by TokenName. Buffer is returned.
556 If SizeOfBuffer is greater than the maximum size supported by TokenName,
557 then set SizeOfBuffer to the maximum size supported by TokenName and return NULL
558 to indicate that the set operation was not actually performed. If SizeOfBuffer
559 is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size supported
560 by TokenName and NULL must be returned.
561 If TokenName is not a valid token in the token space, then the module will not build.
562
563 If SizeOfBuffer is NULL, then ASSERT().
564 If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
565
566 @param TokenName The name of the PCD token to set the current value for.
567 @param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
568 @param Buffer A pointer to the buffer to set.
569
570 @return Return the pointer to the Buffer that was set.
571
572 **/
573 #define PcdSetPtr(TokenName, SizeOfBuffer, Buffer) \
574 _PCD_SET_MODE_PTR_##TokenName ((SizeOfBuffer), (Buffer))
575
576 /**
577 Sets a Boolean PCD token value based on a token name.
578
579 Sets the Boolean value for the token specified by TokenName. Value is returned.
580 If TokenName is not a valid token in the token space, then the module will not build.
581
582 @param TokenName The name of the PCD token to set the current value for.
583 @param Buffer The Boolean value to set.
584
585 @return Return the Value that was set.
586
587 **/
588 #define PcdSetBool(TokenName, Value) _PCD_SET_MODE_BOOL_##TokenName ((Value))
589 #endif
590
591 /**
592 Sets a 8-bit PCD token value based on a token name.
593
594 Sets the 8-bit value for the token specified by TokenName.
595 If TokenName is not a valid token in the token space, then the module will not build.
596
597 @param TokenName The name of the PCD token to retrieve a current value for.
598 @param Value The 8-bit value to set.
599
600 @return The status of the set operation.
601
602 **/
603 #define PcdSet8S(TokenName, Value) _PCD_SET_MODE_8_S_##TokenName ((Value))
604
605 /**
606 Sets a 16-bit PCD token value based on a token name.
607
608 Sets the 16-bit value for the token specified by TokenName.
609 If TokenName is not a valid token in the token space, then the module will not build.
610
611 @param TokenName The name of the PCD token to retrieve a current value for.
612 @param Value The 16-bit value to set.
613
614 @return The status of the set operation.
615
616 **/
617 #define PcdSet16S(TokenName, Value) _PCD_SET_MODE_16_S_##TokenName ((Value))
618
619 /**
620 Sets a 32-bit PCD token value based on a token name.
621
622 Sets the 32-bit value for the token specified by TokenName.
623 If TokenName is not a valid token in the token space, then the module will not build.
624
625 @param TokenName The name of the PCD token to retrieve a current value for.
626 @param Value The 32-bit value to set.
627
628 @return The status of the set operation.
629
630 **/
631 #define PcdSet32S(TokenName, Value) _PCD_SET_MODE_32_S_##TokenName ((Value))
632
633 /**
634 Sets a 64-bit PCD token value based on a token name.
635
636 Sets the 64-bit value for the token specified by TokenName.
637 If TokenName is not a valid token in the token space, then the module will not build.
638
639 @param TokenName The name of the PCD token to retrieve a current value for.
640 @param Value The 64-bit value to set.
641
642 @return The status of the set operation.
643
644 **/
645 #define PcdSet64S(TokenName, Value) _PCD_SET_MODE_64_S_##TokenName ((Value))
646
647 /**
648 Sets a pointer to a PCD token buffer based on a token name.
649
650 Sets the buffer for the token specified by TokenName.
651 If SizeOfBuffer is greater than the maximum size supported by TokenName,
652 then set SizeOfBuffer to the maximum size supported by TokenName and return
653 RETURN_INVALID_PARAMETER to indicate that the set operation was not actually performed.
654 If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size
655 supported by TokenName and RETURN_INVALID_PARAMETER must be returned.
656 If TokenName is not a valid token in the token space, then the module will not build.
657
658 If SizeOfBuffer is NULL, then ASSERT().
659 If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
660
661 @param TokenName The name of the PCD token to set the current value for.
662 @param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
663 @param Buffer A pointer to the buffer to set.
664
665 @return The status of the set operation.
666
667 **/
668 #define PcdSetPtrS(TokenName, SizeOfBuffer, Buffer) \
669 _PCD_SET_MODE_PTR_S_##TokenName ((SizeOfBuffer), (Buffer))
670
671
672
673 /**
674 Sets a boolean PCD token value based on a token name.
675
676 Sets the boolean value for the token specified by TokenName.
677 If TokenName is not a valid token in the token space, then the module will not build.
678
679 @param TokenName The name of the PCD token to retrieve a current value for.
680 @param Value The boolean value to set.
681
682 @return The status of the set operation.
683
684 **/
685 #define PcdSetBoolS(TokenName, Value) _PCD_SET_MODE_BOOL_S_##TokenName ((Value))
686
687 /**
688 Retrieves a token number based on a GUID and a token name.
689
690 Returns the token number for the token specified by Guid and TokenName.
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