Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/sys/contrib/edk2/Include/Library/PcdLib.h
48383 views
1
/** @file
2
Provides library services to get and set Platform Configuration Database entries.
3
4
PCD Library Class provides a PCD usage macro interface for all PCD types.
5
It should be included in any module that uses PCD. If a module uses dynamic/dynamicex
6
PCD, module should be linked to a PEIM/DXE library instance to access that PCD.
7
If a module uses PatchableInModule type PCD, it also needs the library instance to produce
8
LibPatchPcdSetPtr() interface. For FeatureFlag/Fixed PCD, the macro interface is
9
translated to a variable or macro that is auto-generated by build tool in
10
module's autogen.h/autogen.c.
11
The PcdGetXX(), PcdSetXX(), PcdToken(), and PcdGetNextTokenSpace() operations are
12
only available prior to ExitBootServices(). If access to PCD values are required
13
at runtime, then their values must be collected prior to ExitBootServices().
14
There are no restrictions on the use of FeaturePcd(), FixedPcdGetXX(),
15
PatchPcdGetXX(), and PatchPcdSetXX().
16
17
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
18
SPDX-License-Identifier: BSD-2-Clause-Patent
19
20
**/
21
22
#ifndef __PCD_LIB_H__
23
#define __PCD_LIB_H__
24
25
/**
26
Retrieves a token number based on a token name.
27
28
Returns the token number associated with the PCD token specified by TokenName.
29
If TokenName is not a valid token in the token space, then the module will not build.
30
31
@param TokenName The name of the PCD token to retrieve the token number for.
32
33
@return The token number associated with the PCD.
34
35
**/
36
#define PcdToken(TokenName) _PCD_TOKEN_##TokenName
37
38
/**
39
Retrieves a Boolean PCD feature flag based on a token name.
40
41
Returns the Boolean value for the PCD feature flag specified by TokenName.
42
If TokenName is not a valid token in the token space, then the module will not build.
43
If TokenName is not a feature flag PCD, then the module will not build.
44
45
@param TokenName The name of the PCD token to retrieve a current value for.
46
47
@return Boolean value for the PCD feature flag.
48
49
**/
50
#define FeaturePcdGet(TokenName) _PCD_GET_MODE_BOOL_##TokenName
51
52
/**
53
Retrieves an 8-bit fixed PCD token value based on a token name.
54
55
Returns the 8-bit value for the token specified by TokenName.
56
If TokenName is not a valid token in the token space, then the module will not build.
57
If TokenName is not a fixed at build PCD, then the module will not build.
58
59
@param TokenName The name of the PCD token to retrieve a current value for.
60
61
@return 8-bit value for the token specified by TokenName.
62
63
**/
64
#define FixedPcdGet8(TokenName) _PCD_VALUE_##TokenName
65
66
/**
67
Retrieves a 16-bit fixed PCD token value based on a token name.
68
69
Returns the 16-bit value for the token specified by TokenName.
70
If TokenName is not a valid token in the token space, then the module will not build.
71
If TokenName is not a fixed at build PCD, then the module will not build.
72
73
@param TokenName The name of the PCD token to retrieve a current value for.
74
75
@return 16-bit value for the token specified by TokenName.
76
77
**/
78
#define FixedPcdGet16(TokenName) _PCD_VALUE_##TokenName
79
80
/**
81
Retrieves a 32-bit fixed PCD token value based on a token name.
82
83
Returns the 32-bit value for the token specified by TokenName.
84
If TokenName is not a valid token in the token space, then the module will not build.
85
If TokenName is not a fixed at build PCD, then the module will not build.
86
87
@param TokenName The name of the PCD token to retrieve a current value for.
88
89
@return 32-bit value for the token specified by TokenName.
90
91
**/
92
#define FixedPcdGet32(TokenName) _PCD_VALUE_##TokenName
93
94
/**
95
Retrieves a 64-bit fixed PCD token value based on a token name.
96
97
Returns the 64-bit value for the token specified by TokenName.
98
If TokenName is not a valid token in the token space, then the module will not build.
99
If TokenName is not a fixed at build PCD, then the module will not build.
100
101
@param TokenName The name of the PCD token to retrieve a current value for.
102
103
@return 64-bit value for the token specified by TokenName.
104
105
**/
106
#define FixedPcdGet64(TokenName) _PCD_VALUE_##TokenName
107
108
/**
109
Retrieves a Boolean fixed PCD token value based on a token name.
110
111
Returns the Boolean value for the token specified by TokenName.
112
If TokenName is not a valid token in the token space, then the module will not build.
113
If TokenName is not a fixed at build PCD, then the module will not build.
114
115
@param TokenName The name of the PCD token to retrieve a current value for.
116
117
@return The Boolean value for the token.
118
119
**/
120
#define FixedPcdGetBool(TokenName) _PCD_VALUE_##TokenName
121
122
/**
123
Retrieves a pointer to a fixed PCD token buffer based on a token name.
124
125
Returns a pointer to the buffer 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 fixed at build PCD, 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 A pointer to the buffer.
132
133
**/
134
#define FixedPcdGetPtr(TokenName) ((VOID *)_PCD_VALUE_##TokenName)
135
136
/**
137
Retrieves an 8-bit binary patchable PCD token value based on a token name.
138
139
Returns the 8-bit value 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 patchable in module 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 An 8-bit binary patchable PCD token value.
146
147
**/
148
#define PatchPcdGet8(TokenName) _gPcd_BinaryPatch_##TokenName
149
150
/**
151
Retrieves a 16-bit binary patchable PCD token value based on a token name.
152
153
Returns the 16-bit value for the token specified by TokenName.
154
If TokenName is not a valid token in the token space, then the module will not build.
155
If TokenName is not a patchable in module PCD, then the module will not build.
156
157
@param TokenName The name of the PCD token to retrieve a current value for.
158
159
@return A 16-bit binary patchable PCD token value.
160
161
**/
162
#define PatchPcdGet16(TokenName) _gPcd_BinaryPatch_##TokenName
163
164
/**
165
Retrieves a 32-bit binary patchable PCD token value based on a token name.
166
167
Returns the 32-bit value for the token specified by TokenName.
168
If TokenName is not a valid token in the token space, then the module will not build.
169
If TokenName is not a patchable in module PCD, then the module will not build.
170
171
@param TokenName The name of the PCD token to retrieve a current value for.
172
173
@return A 32-bit binary patchable PCD token value.
174
175
**/
176
#define PatchPcdGet32(TokenName) _gPcd_BinaryPatch_##TokenName
177
178
/**
179
Retrieves a 64-bit binary patchable PCD token value based on a token name.
180
181
Returns the 64-bit value for the token specified by TokenName.
182
If TokenName is not a valid token in the token space, then the module will not build.
183
If TokenName is not a patchable in module PCD, then the module will not build.
184
185
@param TokenName The name of the PCD token to retrieve a current value for.
186
187
@return A 64-bit binary patchable PCD token value.
188
189
**/
190
#define PatchPcdGet64(TokenName) _gPcd_BinaryPatch_##TokenName
191
192
/**
193
Retrieves a Boolean binary patchable PCD token value based on a token name.
194
195
Returns the Boolean value for the token specified by TokenName.
196
If TokenName is not a valid token in the token space, then the module will not build.
197
If TokenName is not a patchable in module PCD, then the module will not build.
198
199
@param TokenName The name of the PCD token to retrieve a current value for.
200
201
@return The Boolean value for the token.
202
203
**/
204
#define PatchPcdGetBool(TokenName) _gPcd_BinaryPatch_##TokenName
205
206
/**
207
Retrieves a pointer to a binary patchable PCD token buffer based on a token name.
208
209
Returns a pointer to the buffer for the token specified by TokenName.
210
If TokenName is not a valid token in the token space, then the module will not build.
211
If TokenName is not a patchable in module PCD, then the module will not build.
212
213
@param TokenName The name of the PCD token to retrieve a current value for.
214
215
@return A pointer to the buffer for the token.
216
217
**/
218
#define PatchPcdGetPtr(TokenName) ((VOID *)_gPcd_BinaryPatch_##TokenName)
219
220
/**
221
Sets an 8-bit binary patchable PCD token value based on a token name.
222
223
Sets the 8-bit value for the token specified by TokenName. Value is returned.
224
If TokenName is not a valid token in the token space, then the module will not build.
225
If TokenName is not a patchable in module PCD, then the module will not build.
226
227
@param TokenName The name of the binary patchable PCD token to set the current value for.
228
@param Value The 8-bit value to set.
229
230
@return Return the Value that was set.
231
232
**/
233
#define PatchPcdSet8(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
234
235
/**
236
Sets a 16-bit binary patchable PCD token value based on a token name.
237
238
Sets the 16-bit value for the token specified by TokenName. Value is returned.
239
If TokenName is not a valid token in the token space, then the module will not build.
240
If TokenName is not a patchable in module PCD, then the module will not build.
241
242
@param TokenName The name of the binary patchable PCD token to set the current value for.
243
@param Value The 16-bit value to set.
244
245
@return Return the Value that was set.
246
247
**/
248
#define PatchPcdSet16(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
249
250
/**
251
Sets a 32-bit binary patchable PCD token value based on a token name.
252
253
Sets the 32-bit value for the token specified by TokenName. Value is returned.
254
If TokenName is not a valid token in the token space, then the module will not build.
255
If TokenName is not a patchable in module PCD, then the module will not build.
256
257
@param TokenName The name of the binary patchable PCD token to set the current value for.
258
@param Value The 32-bit value to set.
259
260
@return Return the Value that was set.
261
262
**/
263
#define PatchPcdSet32(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
264
265
/**
266
Sets a 64-bit binary patchable PCD token value based on a token name.
267
268
Sets the 64-bit value for the token specified by TokenName. Value is returned.
269
If TokenName is not a valid token in the token space, then the module will not build.
270
If TokenName is not a patchable in module PCD, then the module will not build.
271
272
@param TokenName The name of the binary patchable PCD token to set the current value for.
273
@param Value The 64-bit value to set.
274
275
@return Return the Value that was set.
276
277
**/
278
#define PatchPcdSet64(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
279
280
/**
281
Sets a Boolean binary patchable PCD token value based on a token name.
282
283
Sets the Boolean value for the token specified by TokenName. Value is returned.
284
If TokenName is not a valid token in the token space, then the module will not build.
285
If TokenName is not a patchable in module PCD, then the module will not build.
286
287
@param TokenName The name of the binary patchable PCD token to set the current value for.
288
@param Value The boolean value to set.
289
290
@return Return the Value that was set.
291
292
**/
293
#define PatchPcdSetBool(TokenName, Value) (_gPcd_BinaryPatch_##TokenName = (Value))
294
295
/**
296
Sets a pointer to a binary patchable PCD token buffer based on a token name.
297
298
Sets the buffer for the token specified by TokenName. Buffer is returned.
299
If SizeOfBuffer is greater than the maximum size supported by TokenName, then set SizeOfBuffer
300
to the maximum size supported by TokenName and return NULL to indicate that the set operation
301
was not actually performed. If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be
302
set to the maximum size supported by TokenName and NULL must be returned.
303
If TokenName is not a valid token in the token space, then the module will not build.
304
If TokenName is not a patchable in module PCD, then the module will not build.
305
306
If SizeOfBuffer is NULL, then ASSERT().
307
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
308
309
@param TokenName The name of the binary patchable PCD token to set the current value for.
310
@param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
311
@param Buffer Pointer to the value to set.
312
313
@return Return the pointer to the Buffer that was set.
314
315
**/
316
#define PatchPcdSetPtr(TokenName, Size, Buffer) \
317
LibPatchPcdSetPtrAndSize ( \
318
(VOID *)_gPcd_BinaryPatch_##TokenName, \
319
&_gPcd_BinaryPatch_Size_##TokenName, \
320
(UINTN)_PCD_PATCHABLE_##TokenName##_SIZE, \
321
(Size), \
322
(Buffer) \
323
)
324
325
/**
326
Retrieves an 8-bit PCD token value based on a token name.
327
328
Returns the 8-bit value for the token specified by TokenName.
329
If TokenName is not a valid token in the token space, then the module will not build.
330
331
@param TokenName The name of the PCD token to retrieve a current value for.
332
333
@return 8-bit value for the token specified by TokenName.
334
335
**/
336
#define PcdGet8(TokenName) _PCD_GET_MODE_8_##TokenName
337
338
/**
339
Retrieves a 16-bit PCD token value based on a token name.
340
341
Returns the 16-bit value for the token specified by TokenName.
342
If TokenName is not a valid token in the token space, then the module will not build.
343
344
@param TokenName The name of the PCD token to retrieve a current value for.
345
346
@return 16-bit value for the token specified by TokenName.
347
348
**/
349
#define PcdGet16(TokenName) _PCD_GET_MODE_16_##TokenName
350
351
/**
352
Retrieves a 32-bit PCD token value based on a token name.
353
354
Returns the 32-bit value for the token specified by TokenName.
355
If TokenName is not a valid token in the token space, then the module will not build.
356
357
@param TokenName The name of the PCD token to retrieve a current value for.
358
359
@return 32-bit value for the token specified by TokenName.
360
361
**/
362
#define PcdGet32(TokenName) _PCD_GET_MODE_32_##TokenName
363
364
/**
365
Retrieves a 64-bit PCD token value based on a token name.
366
367
Returns the 64-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 64-bit value for the token specified by TokenName.
373
374
**/
375
#define PcdGet64(TokenName) _PCD_GET_MODE_64_##TokenName
376
377
/**
378
Retrieves a pointer to a PCD token buffer based on a token name.
379
380
Returns a pointer to the buffer 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 A pointer to the buffer.
386
387
**/
388
#define PcdGetPtr(TokenName) _PCD_GET_MODE_PTR_##TokenName
389
390
/**
391
Retrieves a Boolean PCD token value based on a token name.
392
393
Returns the Boolean value for the token specified by TokenName.
394
If TokenName is not a valid token in the token space, then the module will not build.
395
396
@param TokenName The name of the PCD token to retrieve a current value for.
397
398
@return A Boolean PCD token value.
399
400
**/
401
#define PcdGetBool(TokenName) _PCD_GET_MODE_BOOL_##TokenName
402
403
/**
404
Retrieves the size of a fixed PCD token based on a token name.
405
406
Returns the size of the token specified by TokenName.
407
If TokenName is not a valid token in the token space, then the module will not build.
408
409
@param[in] TokenName The name of the PCD token to retrieve a current value size for.
410
411
@return Return the size
412
413
**/
414
#define FixedPcdGetSize(TokenName) _PCD_SIZE_##TokenName
415
416
/**
417
Retrieves the size of a binary patchable PCD token based on a token name.
418
419
Returns the size of the token specified by TokenName.
420
If TokenName is not a valid token in the token space, then the module will not build.
421
422
@param[in] TokenName The name of the PCD token to retrieve a current value size for.
423
424
@return Return the size
425
426
**/
427
#define PatchPcdGetSize(TokenName) _gPcd_BinaryPatch_Size_##TokenName
428
429
/**
430
Retrieves the size of the PCD token based on a token name.
431
432
Returns the size of the token specified by TokenName.
433
If TokenName is not a valid token in the token space, then the module will not build.
434
435
@param[in] TokenName The name of the PCD token to retrieve a current value size for.
436
437
@return Return the size
438
439
**/
440
#define PcdGetSize(TokenName) _PCD_GET_MODE_SIZE_##TokenName
441
442
/**
443
Retrieve the size of a given PCD token.
444
445
Returns the size of the token specified by TokenNumber and Guid.
446
If Guid is NULL, then ASSERT().
447
448
@param[in] Guid Pointer to a 128-bit unique value that designates
449
which namespace to retrieve a value from.
450
@param[in] TokenNumber The PCD token number to retrieve a current value size for.
451
452
@return Return the size.
453
454
**/
455
#define PcdGetExSize(Guid, TokenName) LibPcdGetExSize ((Guid), PcdTokenEx(Guid,TokenName))
456
457
/**
458
Sets a 8-bit PCD token value based on a token name.
459
460
Sets the 8-bit value for the token specified by TokenName.
461
If TokenName is not a valid token in the token space, then the module will not build.
462
463
@param TokenName The name of the PCD token to retrieve a current value for.
464
@param Value The 8-bit value to set.
465
466
@return The status of the set operation.
467
468
**/
469
#define PcdSet8S(TokenName, Value) _PCD_SET_MODE_8_S_##TokenName ((Value))
470
471
/**
472
Sets a 16-bit PCD token value based on a token name.
473
474
Sets the 16-bit value for the token specified by TokenName.
475
If TokenName is not a valid token in the token space, then the module will not build.
476
477
@param TokenName The name of the PCD token to retrieve a current value for.
478
@param Value The 16-bit value to set.
479
480
@return The status of the set operation.
481
482
**/
483
#define PcdSet16S(TokenName, Value) _PCD_SET_MODE_16_S_##TokenName ((Value))
484
485
/**
486
Sets a 32-bit PCD token value based on a token name.
487
488
Sets the 32-bit value for the token specified by TokenName.
489
If TokenName is not a valid token in the token space, then the module will not build.
490
491
@param TokenName The name of the PCD token to retrieve a current value for.
492
@param Value The 32-bit value to set.
493
494
@return The status of the set operation.
495
496
**/
497
#define PcdSet32S(TokenName, Value) _PCD_SET_MODE_32_S_##TokenName ((Value))
498
499
/**
500
Sets a 64-bit PCD token value based on a token name.
501
502
Sets the 64-bit value for the token specified by TokenName.
503
If TokenName is not a valid token in the token space, then the module will not build.
504
505
@param TokenName The name of the PCD token to retrieve a current value for.
506
@param Value The 64-bit value to set.
507
508
@return The status of the set operation.
509
510
**/
511
#define PcdSet64S(TokenName, Value) _PCD_SET_MODE_64_S_##TokenName ((Value))
512
513
/**
514
Sets a pointer to a PCD token buffer based on a token name.
515
516
Sets the buffer for the token specified by TokenName.
517
If SizeOfBuffer is greater than the maximum size supported by TokenName,
518
then set SizeOfBuffer to the maximum size supported by TokenName and return
519
RETURN_INVALID_PARAMETER to indicate that the set operation was not actually performed.
520
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size
521
supported by TokenName and RETURN_INVALID_PARAMETER must be returned.
522
If TokenName is not a valid token in the token space, then the module will not build.
523
524
If SizeOfBuffer is NULL, then ASSERT().
525
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
526
527
@param TokenName The name of the PCD token to set the current value for.
528
@param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
529
@param Buffer A pointer to the buffer to set.
530
531
@return The status of the set operation.
532
533
**/
534
#define PcdSetPtrS(TokenName, SizeOfBuffer, Buffer) \
535
_PCD_SET_MODE_PTR_S_##TokenName ((SizeOfBuffer), (Buffer))
536
537
/**
538
Sets a boolean PCD token value based on a token name.
539
540
Sets the boolean value for the token specified by TokenName.
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 boolean value to set.
545
546
@return The status of the set operation.
547
548
**/
549
#define PcdSetBoolS(TokenName, Value) _PCD_SET_MODE_BOOL_S_##TokenName ((Value))
550
551
/**
552
Retrieves a token number based on a GUID and a token name.
553
554
Returns the token number for the token specified by Guid and TokenName.
555
If TokenName is not a valid token in the token space, then the module will not build.
556
557
@param Guid Pointer to a 128-bit unique value that designates
558
which namespace to retrieve a value from.
559
@param TokenName The name of the PCD token to retrieve a current value for.
560
561
@return Return the token number.
562
563
**/
564
#define PcdTokenEx(Guid, TokenName) _PCD_TOKEN_EX_##TokenName(Guid)
565
566
/**
567
Retrieves an 8-bit PCD token value based on a GUID and a token name.
568
569
Returns the 8-bit value for the token specified by Guid and TokenName.
570
If TokenName is not a valid token in the token space specified by Guid,
571
then the module will not build.
572
573
If Guid is NULL, then ASSERT().
574
575
@param Guid Pointer to a 128-bit unique value that designates
576
which namespace to retrieve a value from.
577
@param TokenName The name of the PCD token to retrieve a current value for.
578
579
@return An 8-bit PCD token value.
580
581
**/
582
#define PcdGetEx8(Guid, TokenName) LibPcdGetEx8 ((Guid), PcdTokenEx(Guid,TokenName))
583
584
/**
585
Retrieves a 16-bit PCD token value based on a GUID and a token name.
586
587
Returns the 16-bit value for the token specified by Guid and TokenName.
588
If TokenName is not a valid token in the token space specified by Guid,
589
then the module will not build.
590
591
If Guid is NULL, then ASSERT().
592
593
@param Guid Pointer to a 128-bit unique value that designates
594
which namespace to retrieve a value from.
595
@param TokenName The name of the PCD token to retrieve a current value for.
596
597
@return A 16-bit PCD token value.
598
599
**/
600
#define PcdGetEx16(Guid, TokenName) LibPcdGetEx16 ((Guid), PcdTokenEx(Guid,TokenName))
601
602
/**
603
Retrieves a 32-bit PCD token value based on a GUID and a token name.
604
605
Returns the 32-bit value for the token specified by Guid and TokenName.
606
If TokenName is not a valid token in the token space specified by Guid,
607
then the module will not build.
608
609
If Guid is NULL, then ASSERT().
610
611
@param Guid Pointer to a 128-bit unique value that designates
612
which namespace to retrieve a value from.
613
@param TokenName The name of the PCD token to retrieve a current value for.
614
615
@return A 32-bit PCD token value.
616
617
**/
618
#define PcdGetEx32(Guid, TokenName) LibPcdGetEx32 ((Guid), PcdTokenEx(Guid,TokenName))
619
620
/**
621
Retrieves a 64-bit PCD token value based on a GUID and a token name.
622
623
Returns the 64-bit value for the token specified by Guid and TokenName.
624
If TokenName is not a valid token in the token space specified by Guid,
625
then the module will not build.
626
627
If Guid is NULL, then ASSERT().
628
629
@param Guid Pointer to a 128-bit unique value that designates
630
which namespace to retrieve a value from.
631
@param TokenName The name of the PCD token to retrieve a current value for.
632
633
@return A 64-bit PCD token value.
634
635
**/
636
#define PcdGetEx64(Guid, TokenName) LibPcdGetEx64 ((Guid), PcdTokenEx(Guid,TokenName))
637
638
/**
639
Retrieves a pointer to a PCD token buffer based on a GUID and a token name.
640
641
Returns a pointer to the buffer for the token specified by Guid and TokenName.
642
If TokenName is not a valid token in the token space specified by Guid,
643
then the module will not build.
644
645
If Guid is NULL, then ASSERT().
646
647
@param Guid Pointer to a 128-bit unique value that designates
648
which namespace to retrieve a value from.
649
@param TokenName The name of the PCD token to retrieve a current value for.
650
651
@return A pointer to a PCD token buffer.
652
653
**/
654
#define PcdGetExPtr(Guid, TokenName) LibPcdGetExPtr ((Guid), PcdTokenEx(Guid,TokenName))
655
656
/**
657
Retrieves a Boolean PCD token value based on a GUID and a token name.
658
659
Returns the Boolean value for the token specified by Guid and TokenName.
660
If TokenName is not a valid token in the token space specified by Guid,
661
then the module will not build.
662
663
If Guid is NULL, then ASSERT().
664
665
@param Guid Pointer to a 128-bit unique value that designates
666
which namespace to retrieve a value from.
667
@param TokenName The name of the PCD token to retrieve a current value for.
668
669
@return A Boolean PCD token value.
670
671
**/
672
#define PcdGetExBool(Guid, TokenName) LibPcdGetExBool ((Guid), PcdTokenEx(Guid,TokenName))
673
674
/**
675
Sets an 8-bit PCD token value based on a GUID and a token name.
676
677
Sets the 8-bit value for the token specified by Guid and TokenName.
678
If TokenName is not a valid token in the token space specified by Guid,
679
then the module will not build.
680
681
If Guid is NULL, then ASSERT().
682
683
@param Guid Pointer to a 128-bit unique value that designates
684
which namespace to retrieve a value from.
685
@param TokenName The name of the PCD token to set the current value for.
686
@param Value The 8-bit value to set.
687
688
@return The status of the set operation.
689
690
**/
691
#define PcdSetEx8S(Guid, TokenName, Value) LibPcdSetEx8S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
692
693
/**
694
Sets an 16-bit PCD token value based on a GUID and a token name.
695
696
Sets the 16-bit value for the token specified by Guid and TokenName.
697
If TokenName is not a valid token in the token space specified by Guid,
698
then the module will not build.
699
700
If Guid is NULL, then ASSERT().
701
702
@param Guid Pointer to a 128-bit unique value that designates
703
which namespace to retrieve a value from.
704
@param TokenName The name of the PCD token to set the current value for.
705
@param Value The 16-bit value to set.
706
707
@return The status of the set operation.
708
709
**/
710
#define PcdSetEx16S(Guid, TokenName, Value) LibPcdSetEx16S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
711
712
/**
713
Sets an 32-bit PCD token value based on a GUID and a token name.
714
715
Sets the 32-bit value for the token specified by Guid and TokenName.
716
If TokenName is not a valid token in the token space specified by Guid,
717
then the module will not build.
718
719
If Guid is NULL, then ASSERT().
720
721
@param Guid Pointer to a 128-bit unique value that designates
722
which namespace to retrieve a value from.
723
@param TokenName The name of the PCD token to set the current value for.
724
@param Value The 32-bit value to set.
725
726
@return The status of the set operation.
727
728
**/
729
#define PcdSetEx32S(Guid, TokenName, Value) LibPcdSetEx32S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
730
731
/**
732
Sets an 64-bit PCD token value based on a GUID and a token name.
733
734
Sets the 64-bit value for the token specified by Guid and TokenName.
735
If TokenName is not a valid token in the token space specified by Guid,
736
then the module will not build.
737
738
If Guid is NULL, then ASSERT().
739
740
@param Guid Pointer to a 128-bit unique value that designates
741
which namespace to retrieve a value from.
742
@param TokenName The name of the PCD token to set the current value for.
743
@param Value The 64-bit value to set.
744
745
@return The status of the set operation.
746
747
**/
748
#define PcdSetEx64S(Guid, TokenName, Value) LibPcdSetEx64S ((Guid), PcdTokenEx(Guid,TokenName), (Value))
749
750
/**
751
Sets a pointer to a PCD token buffer based on a GUID and a token name.
752
753
Sets the buffer for the token specified by Guid and TokenName.
754
If SizeOfBuffer is greater than the maximum size supported by Guid and TokenName,
755
then set SizeOfBuffer to the maximum size supported by Guid and TokenName and return
756
RETURN_INVALID_PARAMETER to indicate that the set operation was not actually performed.
757
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the maximum size
758
supported by Guid and TokenName and RETURN_INVALID_PARAMETER must be returned.
759
If TokenName is not a valid token in the token space specified by Guid,
760
then the module will not build.
761
762
If Guid is NULL, then ASSERT().
763
If SizeOfBuffer is NULL, then ASSERT().
764
If SizeOfBuffer > 0 and Buffer 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 set the current value for.
769
@param SizeOfBuffer A pointer to the size, in bytes, of Buffer.
770
@param Buffer Pointer to the buffer to set.
771
772
@return The status of the set operation.
773
774
**/
775
#define PcdSetExPtrS(Guid, TokenName, SizeOfBuffer, Buffer) \
776
LibPcdSetExPtrS ((Guid), PcdTokenEx(Guid,TokenName), (SizeOfBuffer), (Buffer))
777
778
/**
779
Sets an boolean PCD token value based on a GUID and a token name.
780
781
Sets the boolean value for the token specified by Guid and TokenName.
782
If TokenName is not a valid token in the token space specified by Guid,
783
then the module will not build.
784
785
If Guid is NULL, then ASSERT().
786
787
@param Guid Pointer to a 128-bit unique value that designates
788
which namespace to retrieve a value from.
789
@param TokenName The name of the PCD token to set the current value for.
790
@param Value The boolean value to set.
791
792
@return The status of the set operation.
793
794
**/
795
#define PcdSetExBoolS(Guid, TokenName, Value) \
796
LibPcdSetExBoolS ((Guid), PcdTokenEx(Guid,TokenName), (Value))
797
798
/**
799
This function provides a means by which SKU support can be established in the PCD infrastructure.
800
801
Sets the current SKU in the PCD database to the value specified by SkuId. SkuId is returned.
802
803
@param SkuId The SKU value that will be used when the PCD service retrieves and sets values
804
associated with a PCD token.
805
806
@return Return the SKU ID that was set.
807
808
**/
809
UINTN
810
EFIAPI
811
LibPcdSetSku (
812
IN UINTN SkuId
813
);
814
815
/**
816
This function provides a means by which to retrieve a value for a given PCD token.
817
818
Returns the 8-bit value for the token specified by TokenNumber.
819
820
@param[in] TokenNumber The PCD token number to retrieve a current value for.
821
822
@return Returns the 8-bit value for the token specified by TokenNumber.
823
824
**/
825
UINT8
826
EFIAPI
827
LibPcdGet8 (
828
IN UINTN TokenNumber
829
);
830
831
/**
832
This function provides a means by which to retrieve a value for a given PCD token.
833
834
Returns the 16-bit value for the token specified by TokenNumber.
835
836
@param[in] TokenNumber The PCD token number to retrieve a current value for.
837
838
@return Returns the 16-bit value for the token specified by TokenNumber.
839
840
**/
841
UINT16
842
EFIAPI
843
LibPcdGet16 (
844
IN UINTN TokenNumber
845
);
846
847
/**
848
This function provides a means by which to retrieve a value for a given PCD token.
849
850
Returns the 32-bit value for the token specified by TokenNumber.
851
852
@param[in] TokenNumber The PCD token number to retrieve a current value for.
853
854
@return Returns the 32-bit value for the token specified by TokenNumber.
855
856
**/
857
UINT32
858
EFIAPI
859
LibPcdGet32 (
860
IN UINTN TokenNumber
861
);
862
863
/**
864
This function provides a means by which to retrieve a value for a given PCD token.
865
866
Returns the 64-bit value for the token specified by TokenNumber.
867
868
@param[in] TokenNumber The PCD token number to retrieve a current value for.
869
870
@return Returns the 64-bit value for the token specified by TokenNumber.
871
872
**/
873
UINT64
874
EFIAPI
875
LibPcdGet64 (
876
IN UINTN TokenNumber
877
);
878
879
/**
880
This function provides a means by which to retrieve a value for a given PCD token.
881
882
Returns the pointer to the buffer of the token specified by TokenNumber.
883
884
@param[in] TokenNumber The PCD token number to retrieve a current value for.
885
886
@return Returns the pointer to the token specified by TokenNumber.
887
888
**/
889
VOID *
890
EFIAPI
891
LibPcdGetPtr (
892
IN UINTN TokenNumber
893
);
894
895
/**
896
This function provides a means by which to retrieve a value for a given PCD token.
897
898
Returns the Boolean value of the token specified by TokenNumber.
899
900
@param[in] TokenNumber The PCD token number to retrieve a current value for.
901
902
@return Returns the Boolean value of the token specified by TokenNumber.
903
904
**/
905
BOOLEAN
906
EFIAPI
907
LibPcdGetBool (
908
IN UINTN TokenNumber
909
);
910
911
/**
912
This function provides a means by which to retrieve the size of a given PCD token.
913
914
@param[in] TokenNumber The PCD token number to retrieve a current value for.
915
916
@return Returns the size of the token specified by TokenNumber.
917
918
**/
919
UINTN
920
EFIAPI
921
LibPcdGetSize (
922
IN UINTN TokenNumber
923
);
924
925
/**
926
This function provides a means by which to retrieve a value for a given PCD token.
927
928
Returns the 8-bit value for the token specified by TokenNumber and Guid.
929
930
If Guid is NULL, then ASSERT().
931
932
@param[in] Guid Pointer to a 128-bit unique value that designates
933
which namespace to retrieve a value from.
934
@param[in] TokenNumber The PCD token number to retrieve a current value for.
935
936
@return Return the UINT8.
937
938
**/
939
UINT8
940
EFIAPI
941
LibPcdGetEx8 (
942
IN CONST GUID *Guid,
943
IN UINTN TokenNumber
944
);
945
946
/**
947
This function provides a means by which to retrieve a value for a given PCD token.
948
949
Returns the 16-bit value for the token specified by TokenNumber and Guid.
950
951
If Guid is NULL, then ASSERT().
952
953
@param[in] Guid Pointer to a 128-bit unique value that designates
954
which namespace to retrieve a value from.
955
@param[in] TokenNumber The PCD token number to retrieve a current value for.
956
957
@return Return the UINT16.
958
959
**/
960
UINT16
961
EFIAPI
962
LibPcdGetEx16 (
963
IN CONST GUID *Guid,
964
IN UINTN TokenNumber
965
);
966
967
/**
968
Returns the 32-bit value for the token specified by TokenNumber and Guid.
969
If Guid is NULL, then ASSERT().
970
971
@param[in] Guid Pointer to a 128-bit unique value that designates
972
which namespace to retrieve a value from.
973
@param[in] TokenNumber The PCD token number to retrieve a current value for.
974
975
@return Return the UINT32.
976
977
**/
978
UINT32
979
EFIAPI
980
LibPcdGetEx32 (
981
IN CONST GUID *Guid,
982
IN UINTN TokenNumber
983
);
984
985
/**
986
This function provides a means by which to retrieve a value for a given PCD token.
987
988
Returns the 64-bit value for the token specified by TokenNumber and Guid.
989
990
If Guid is NULL, then ASSERT().
991
992
@param[in] Guid Pointer to a 128-bit unique value that designates
993
which namespace to retrieve a value from.
994
@param[in] TokenNumber The PCD token number to retrieve a current value for.
995
996
@return Return the UINT64.
997
998
**/
999
UINT64
1000
EFIAPI
1001
LibPcdGetEx64 (
1002
IN CONST GUID *Guid,
1003
IN UINTN TokenNumber
1004
);
1005
1006
/**
1007
This function provides a means by which to retrieve a value for a given PCD token.
1008
1009
Returns the pointer to the buffer of token specified by TokenNumber and Guid.
1010
1011
If Guid is NULL, then ASSERT().
1012
1013
@param[in] Guid Pointer to a 128-bit unique value that designates
1014
which namespace to retrieve a value from.
1015
@param[in] TokenNumber The PCD token number to retrieve a current value for.
1016
1017
@return Return the VOID* pointer.
1018
1019
**/
1020
VOID *
1021
EFIAPI
1022
LibPcdGetExPtr (
1023
IN CONST GUID *Guid,
1024
IN UINTN TokenNumber
1025
);
1026
1027
/**
1028
This function provides a means by which to retrieve a value for a given PCD token.
1029
1030
Returns the Boolean value of the token specified by TokenNumber and Guid.
1031
1032
If Guid is NULL, then ASSERT().
1033
1034
@param[in] Guid Pointer to a 128-bit unique value that designates
1035
which namespace to retrieve a value from.
1036
@param[in] TokenNumber The PCD token number to retrieve a current value for.
1037
1038
@return Return the BOOLEAN.
1039
1040
**/
1041
BOOLEAN
1042
EFIAPI
1043
LibPcdGetExBool (
1044
IN CONST GUID *Guid,
1045
IN UINTN TokenNumber
1046
);
1047
1048
/**
1049
This function provides a means by which to retrieve the size of a given PCD token.
1050
1051
Returns the size of the token specified by TokenNumber and Guid.
1052
1053
If Guid is NULL, then ASSERT().
1054
1055
@param[in] Guid Pointer to a 128-bit unique value that designates
1056
which namespace to retrieve a value from.
1057
@param[in] TokenNumber The PCD token number to retrieve a current value for.
1058
1059
@return Return the size.
1060
1061
**/
1062
UINTN
1063
EFIAPI
1064
LibPcdGetExSize (
1065
IN CONST GUID *Guid,
1066
IN UINTN TokenNumber
1067
);
1068
1069
/**
1070
This function provides a means by which to set a value for a given PCD token.
1071
1072
Sets the 8-bit value for the token specified by TokenNumber
1073
to the value specified by Value.
1074
1075
@param[in] TokenNumber The PCD token number to set a current value for.
1076
@param[in] Value The 8-bit value to set.
1077
1078
@return The status of the set operation.
1079
1080
**/
1081
RETURN_STATUS
1082
EFIAPI
1083
LibPcdSet8S (
1084
IN UINTN TokenNumber,
1085
IN UINT8 Value
1086
);
1087
1088
/**
1089
This function provides a means by which to set a value for a given PCD token.
1090
1091
Sets the 16-bit value for the token specified by TokenNumber
1092
to the value specified by Value.
1093
1094
@param[in] TokenNumber The PCD token number to set a current value for.
1095
@param[in] Value The 16-bit value to set.
1096
1097
@return The status of the set operation.
1098
1099
**/
1100
RETURN_STATUS
1101
EFIAPI
1102
LibPcdSet16S (
1103
IN UINTN TokenNumber,
1104
IN UINT16 Value
1105
);
1106
1107
/**
1108
This function provides a means by which to set a value for a given PCD token.
1109
1110
Sets the 32-bit value for the token specified by TokenNumber
1111
to the value specified by Value.
1112
1113
@param[in] TokenNumber The PCD token number to set a current value for.
1114
@param[in] Value The 32-bit value to set.
1115
1116
@return The status of the set operation.
1117
1118
**/
1119
RETURN_STATUS
1120
EFIAPI
1121
LibPcdSet32S (
1122
IN UINTN TokenNumber,
1123
IN UINT32 Value
1124
);
1125
1126
/**
1127
This function provides a means by which to set a value for a given PCD token.
1128
1129
Sets the 64-bit value for the token specified by TokenNumber
1130
to the value specified by Value.
1131
1132
@param[in] TokenNumber The PCD token number to set a current value for.
1133
@param[in] Value The 64-bit value to set.
1134
1135
@return The status of the set operation.
1136
1137
**/
1138
RETURN_STATUS
1139
EFIAPI
1140
LibPcdSet64S (
1141
IN UINTN TokenNumber,
1142
IN UINT64 Value
1143
);
1144
1145
/**
1146
This function provides a means by which to set a value for a given PCD token.
1147
1148
Sets a buffer for the token specified by TokenNumber to the value specified
1149
by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size
1150
support by TokenNumber, then set SizeOfBuffer to the maximum size supported by
1151
TokenNumber and return RETURN_INVALID_PARAMETER to indicate that the set operation
1152
was not actually performed.
1153
1154
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to the
1155
maximum size supported by TokenName and RETURN_INVALID_PARAMETER must be returned.
1156
1157
If SizeOfBuffer is NULL, then ASSERT().
1158
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
1159
1160
@param[in] TokenNumber The PCD token number to set a current value for.
1161
@param[in, out] SizeOfBuffer The size, in bytes, of Buffer.
1162
@param[in] Buffer A pointer to the buffer to set.
1163
1164
@return The status of the set operation.
1165
1166
**/
1167
RETURN_STATUS
1168
EFIAPI
1169
LibPcdSetPtrS (
1170
IN UINTN TokenNumber,
1171
IN OUT UINTN *SizeOfBuffer,
1172
IN CONST VOID *Buffer
1173
);
1174
1175
/**
1176
This function provides a means by which to set a value for a given PCD token.
1177
1178
Sets the boolean value for the token specified by TokenNumber
1179
to the value specified by Value.
1180
1181
@param[in] TokenNumber The PCD token number to set a current value for.
1182
@param[in] Value The boolean value to set.
1183
1184
@return The status of the set operation.
1185
1186
**/
1187
RETURN_STATUS
1188
EFIAPI
1189
LibPcdSetBoolS (
1190
IN UINTN TokenNumber,
1191
IN BOOLEAN Value
1192
);
1193
1194
/**
1195
This function provides a means by which to set a value for a given PCD token.
1196
1197
Sets the 8-bit value for the token specified by TokenNumber
1198
to the value specified by Value.
1199
1200
If Guid is NULL, then ASSERT().
1201
1202
@param[in] Guid The pointer to a 128-bit unique value that
1203
designates which namespace to set a value from.
1204
@param[in] TokenNumber The PCD token number to set a current value for.
1205
@param[in] Value The 8-bit value to set.
1206
1207
@return The status of the set operation.
1208
1209
**/
1210
RETURN_STATUS
1211
EFIAPI
1212
LibPcdSetEx8S (
1213
IN CONST GUID *Guid,
1214
IN UINTN TokenNumber,
1215
IN UINT8 Value
1216
);
1217
1218
/**
1219
This function provides a means by which to set a value for a given PCD token.
1220
1221
Sets the 16-bit value for the token specified by TokenNumber
1222
to the value specified by Value.
1223
1224
If Guid is NULL, then ASSERT().
1225
1226
@param[in] Guid The pointer to a 128-bit unique value that
1227
designates which namespace to set a value from.
1228
@param[in] TokenNumber The PCD token number to set a current value for.
1229
@param[in] Value The 16-bit value to set.
1230
1231
@return The status of the set operation.
1232
1233
**/
1234
RETURN_STATUS
1235
EFIAPI
1236
LibPcdSetEx16S (
1237
IN CONST GUID *Guid,
1238
IN UINTN TokenNumber,
1239
IN UINT16 Value
1240
);
1241
1242
/**
1243
This function provides a means by which to set a value for a given PCD token.
1244
1245
Sets the 32-bit value for the token specified by TokenNumber
1246
to the value specified by Value.
1247
1248
If Guid is NULL, then ASSERT().
1249
1250
@param[in] Guid The pointer to a 128-bit unique value that
1251
designates which namespace to set a value from.
1252
@param[in] TokenNumber The PCD token number to set a current value for.
1253
@param[in] Value The 32-bit value to set.
1254
1255
@return The status of the set operation.
1256
1257
**/
1258
RETURN_STATUS
1259
EFIAPI
1260
LibPcdSetEx32S (
1261
IN CONST GUID *Guid,
1262
IN UINTN TokenNumber,
1263
IN UINT32 Value
1264
);
1265
1266
/**
1267
This function provides a means by which to set a value for a given PCD token.
1268
1269
Sets the 64-bit value for the token specified by TokenNumber
1270
to the value specified by Value.
1271
1272
If Guid is NULL, then ASSERT().
1273
1274
@param[in] Guid The pointer to a 128-bit unique value that
1275
designates which namespace to set a value from.
1276
@param[in] TokenNumber The PCD token number to set a current value for.
1277
@param[in] Value The 64-bit value to set.
1278
1279
@return The status of the set operation.
1280
1281
**/
1282
RETURN_STATUS
1283
EFIAPI
1284
LibPcdSetEx64S (
1285
IN CONST GUID *Guid,
1286
IN UINTN TokenNumber,
1287
IN UINT64 Value
1288
);
1289
1290
/**
1291
This function provides a means by which to set a value for a given PCD token.
1292
1293
Sets a buffer for the token specified by TokenNumber to the value specified by
1294
Buffer and SizeOfBuffer. If SizeOfBuffer is greater than the maximum size
1295
support by TokenNumber, then set SizeOfBuffer to the maximum size supported by
1296
TokenNumber and return RETURN_INVALID_PARAMETER to indicate that the set operation
1297
was not actually performed.
1298
1299
If Guid is NULL, then ASSERT().
1300
If SizeOfBuffer is NULL, then ASSERT().
1301
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
1302
1303
@param[in] Guid Pointer to a 128-bit unique value that
1304
designates which namespace to set a value from.
1305
@param[in] TokenNumber The PCD token number to set a current value for.
1306
@param[in, out] SizeOfBuffer The size, in bytes, of Buffer.
1307
@param[in] Buffer A pointer to the buffer to set.
1308
1309
@return The status of the set operation.
1310
1311
**/
1312
RETURN_STATUS
1313
EFIAPI
1314
LibPcdSetExPtrS (
1315
IN CONST GUID *Guid,
1316
IN UINTN TokenNumber,
1317
IN OUT UINTN *SizeOfBuffer,
1318
IN VOID *Buffer
1319
);
1320
1321
/**
1322
This function provides a means by which to set a value for a given PCD token.
1323
1324
Sets the boolean value for the token specified by TokenNumber
1325
to the value specified by Value.
1326
1327
If Guid is NULL, then ASSERT().
1328
1329
@param[in] Guid The pointer to a 128-bit unique value that
1330
designates which namespace to set a value from.
1331
@param[in] TokenNumber The PCD token number to set a current value for.
1332
@param[in] Value The boolean value to set.
1333
1334
@return The status of the set operation.
1335
1336
**/
1337
RETURN_STATUS
1338
EFIAPI
1339
LibPcdSetExBoolS (
1340
IN CONST GUID *Guid,
1341
IN UINTN TokenNumber,
1342
IN BOOLEAN Value
1343
);
1344
1345
/**
1346
This notification function serves two purposes.
1347
1348
Firstly, it notifies the module that did the registration that the value of this
1349
PCD token has been set.
1350
Secondly, it provides a mechanism for the module that did the registration to intercept
1351
the set operation and override the value been set if necessary. After the invocation of
1352
the callback function, TokenData will be used by PCD service PEIM or driver to modify th
1353
internal data in PCD database.
1354
1355
@param[in] CallBackGuid The PCD token GUID being set.
1356
@param[in] CallBackToken The PCD token number being set.
1357
@param[in, out] TokenData A pointer to the token data being set.
1358
@param[in] TokenDataSize The size, in bytes, of the data being set.
1359
1360
**/
1361
typedef
1362
VOID
1363
(EFIAPI *PCD_CALLBACK)(
1364
IN CONST GUID *CallBackGuid OPTIONAL,
1365
IN UINTN CallBackToken,
1366
IN OUT VOID *TokenData,
1367
IN UINTN TokenDataSize
1368
);
1369
1370
/**
1371
Set up a notification function that is called when a specified token is set.
1372
1373
When the token specified by TokenNumber and Guid is set,
1374
then notification function specified by NotificationFunction is called.
1375
If Guid is NULL, then the default token space is used.
1376
If NotificationFunction is NULL, then ASSERT().
1377
1378
@param[in] Guid Pointer to a 128-bit unique value that designates which
1379
namespace to set a value from. If NULL, then the default
1380
token space is used.
1381
@param[in] TokenNumber The PCD token number to monitor.
1382
@param[in] NotificationFunction The function to call when the token
1383
specified by Guid and TokenNumber is set.
1384
1385
**/
1386
VOID
1387
EFIAPI
1388
LibPcdCallbackOnSet (
1389
IN CONST GUID *Guid OPTIONAL,
1390
IN UINTN TokenNumber,
1391
IN PCD_CALLBACK NotificationFunction
1392
);
1393
1394
/**
1395
Disable a notification function that was established with LibPcdCallbackonSet().
1396
1397
Disable a notification function that was previously established with LibPcdCallbackOnSet().
1398
If NotificationFunction is NULL, then ASSERT().
1399
If LibPcdCallbackOnSet() was not previously called with Guid, TokenNumber,
1400
and NotificationFunction, then ASSERT().
1401
1402
@param[in] Guid Specify the GUID token space.
1403
@param[in] TokenNumber Specify the token number.
1404
@param[in] NotificationFunction The callback function to be unregistered.
1405
1406
**/
1407
VOID
1408
EFIAPI
1409
LibPcdCancelCallback (
1410
IN CONST GUID *Guid OPTIONAL,
1411
IN UINTN TokenNumber,
1412
IN PCD_CALLBACK NotificationFunction
1413
);
1414
1415
/**
1416
Retrieves the next token in a token space.
1417
1418
Retrieves the next PCD token number from the token space specified by Guid.
1419
If Guid is NULL, then the default token space is used. If TokenNumber is 0,
1420
then the first token number is returned. Otherwise, the token number that
1421
follows TokenNumber in the token space is returned. If TokenNumber is the last
1422
token number in the token space, then 0 is returned.
1423
1424
If TokenNumber is not 0 and is not in the token space specified by Guid, then ASSERT().
1425
1426
@param[in] Guid Pointer to a 128-bit unique value that designates which namespace
1427
to set a value from. If NULL, then the default token space is used.
1428
@param[in] TokenNumber The previous PCD token number. If 0, then retrieves the first PCD
1429
token number.
1430
1431
@return The next valid token number.
1432
1433
**/
1434
UINTN
1435
EFIAPI
1436
LibPcdGetNextToken (
1437
IN CONST GUID *Guid OPTIONAL,
1438
IN UINTN TokenNumber
1439
);
1440
1441
/**
1442
Used to retrieve the list of available PCD token space GUIDs.
1443
1444
Returns the PCD token space GUID that follows TokenSpaceGuid in the list of token spaces
1445
in the platform.
1446
If TokenSpaceGuid is NULL, then a pointer to the first PCD token spaces returned.
1447
If TokenSpaceGuid is the last PCD token space GUID in the list, then NULL is returned.
1448
1449
@param TokenSpaceGuid Pointer to the a PCD token space GUID
1450
1451
@return The next valid token namespace.
1452
1453
**/
1454
GUID *
1455
EFIAPI
1456
LibPcdGetNextTokenSpace (
1457
IN CONST GUID *TokenSpaceGuid
1458
);
1459
1460
/**
1461
Sets a value of a patchable PCD entry that is type pointer.
1462
1463
Sets the PCD entry specified by PatchVariable to the value specified by Buffer
1464
and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than
1465
MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return
1466
NULL to indicate that the set operation was not actually performed.
1467
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
1468
MaximumDatumSize and NULL must be returned.
1469
1470
If PatchVariable is NULL, then ASSERT().
1471
If SizeOfBuffer is NULL, then ASSERT().
1472
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
1473
1474
@param[out] PatchVariable A pointer to the global variable in a module that is
1475
the target of the set operation.
1476
@param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable.
1477
@param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer.
1478
@param[in] Buffer A pointer to the buffer to used to set the target variable.
1479
1480
@return Return the pointer to the Buffer that was set.
1481
1482
**/
1483
VOID *
1484
EFIAPI
1485
LibPatchPcdSetPtr (
1486
OUT VOID *PatchVariable,
1487
IN UINTN MaximumDatumSize,
1488
IN OUT UINTN *SizeOfBuffer,
1489
IN CONST VOID *Buffer
1490
);
1491
1492
/**
1493
Sets a value of a patchable PCD entry that is type pointer.
1494
1495
Sets the PCD entry specified by PatchVariable to the value specified
1496
by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize,
1497
then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER
1498
to indicate that the set operation was not actually performed.
1499
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
1500
MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned.
1501
1502
If PatchVariable is NULL, then ASSERT().
1503
If SizeOfBuffer is NULL, then ASSERT().
1504
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
1505
1506
@param[out] PatchVariable A pointer to the global variable in a module that is
1507
the target of the set operation.
1508
@param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable.
1509
@param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer.
1510
@param[in] Buffer A pointer to the buffer to used to set the target variable.
1511
1512
@return The status of the set operation.
1513
1514
**/
1515
RETURN_STATUS
1516
EFIAPI
1517
LibPatchPcdSetPtrS (
1518
OUT VOID *PatchVariable,
1519
IN UINTN MaximumDatumSize,
1520
IN OUT UINTN *SizeOfBuffer,
1521
IN CONST VOID *Buffer
1522
);
1523
1524
/**
1525
Sets a value and size of a patchable PCD entry that is type pointer.
1526
1527
Sets the PCD entry specified by PatchVariable to the value specified by Buffer
1528
and SizeOfBuffer. Buffer is returned. If SizeOfBuffer is greater than
1529
MaximumDatumSize, then set SizeOfBuffer to MaximumDatumSize and return
1530
NULL to indicate that the set operation was not actually performed.
1531
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
1532
MaximumDatumSize and NULL must be returned.
1533
1534
If PatchVariable is NULL, then ASSERT().
1535
If SizeOfPatchVariable is NULL, then ASSERT().
1536
If SizeOfBuffer is NULL, then ASSERT().
1537
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
1538
1539
@param[out] PatchVariable A pointer to the global variable in a module that is
1540
the target of the set operation.
1541
@param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable.
1542
@param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable.
1543
@param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer.
1544
@param[in] Buffer A pointer to the buffer to used to set the target variable.
1545
1546
@return Return the pointer to the Buffer that was set.
1547
1548
**/
1549
VOID *
1550
EFIAPI
1551
LibPatchPcdSetPtrAndSize (
1552
OUT VOID *PatchVariable,
1553
OUT UINTN *SizeOfPatchVariable,
1554
IN UINTN MaximumDatumSize,
1555
IN OUT UINTN *SizeOfBuffer,
1556
IN CONST VOID *Buffer
1557
);
1558
1559
/**
1560
Sets a value and size of a patchable PCD entry that is type pointer.
1561
1562
Sets the PCD entry specified by PatchVariable to the value specified
1563
by Buffer and SizeOfBuffer. If SizeOfBuffer is greater than MaximumDatumSize,
1564
then set SizeOfBuffer to MaximumDatumSize and return RETURN_INVALID_PARAMETER
1565
to indicate that the set operation was not actually performed.
1566
If SizeOfBuffer is set to MAX_ADDRESS, then SizeOfBuffer must be set to
1567
MaximumDatumSize and RETURN_INVALID_PARAMETER must be returned.
1568
1569
If PatchVariable is NULL, then ASSERT().
1570
If SizeOfPatchVariable is NULL, then ASSERT().
1571
If SizeOfBuffer is NULL, then ASSERT().
1572
If SizeOfBuffer > 0 and Buffer is NULL, then ASSERT().
1573
1574
@param[out] PatchVariable A pointer to the global variable in a module that is
1575
the target of the set operation.
1576
@param[out] SizeOfPatchVariable A pointer to the size, in bytes, of PatchVariable.
1577
@param[in] MaximumDatumSize The maximum size allowed for the PCD entry specified by PatchVariable.
1578
@param[in, out] SizeOfBuffer A pointer to the size, in bytes, of Buffer.
1579
@param[in] Buffer A pointer to the buffer to used to set the target variable.
1580
1581
@return The status of the set operation.
1582
1583
**/
1584
RETURN_STATUS
1585
EFIAPI
1586
LibPatchPcdSetPtrAndSizeS (
1587
OUT VOID *PatchVariable,
1588
OUT UINTN *SizeOfPatchVariable,
1589
IN UINTN MaximumDatumSize,
1590
IN OUT UINTN *SizeOfBuffer,
1591
IN CONST VOID *Buffer
1592
);
1593
1594
typedef enum {
1595
PCD_TYPE_8,
1596
PCD_TYPE_16,
1597
PCD_TYPE_32,
1598
PCD_TYPE_64,
1599
PCD_TYPE_BOOL,
1600
PCD_TYPE_PTR
1601
} PCD_TYPE;
1602
1603
typedef struct {
1604
///
1605
/// The returned information associated with the requested TokenNumber. If
1606
/// TokenNumber is 0, then PcdType is set to PCD_TYPE_8.
1607
///
1608
PCD_TYPE PcdType;
1609
///
1610
/// The size of the data in bytes associated with the TokenNumber specified. If
1611
/// TokenNumber is 0, then PcdSize is set 0.
1612
///
1613
UINTN PcdSize;
1614
///
1615
/// The null-terminated ASCII string associated with a given token. If the
1616
/// TokenNumber specified was 0, then this field corresponds to the null-terminated
1617
/// ASCII string associated with the token's namespace Guid. If NULL, there is no
1618
/// name associated with this request.
1619
///
1620
CHAR8 *PcdName;
1621
} PCD_INFO;
1622
1623
/**
1624
Retrieve additional information associated with a PCD token.
1625
1626
This includes information such as the type of value the TokenNumber is associated with as well as possible
1627
human readable name that is associated with the token.
1628
1629
If TokenNumber is not in the default token space specified, then ASSERT().
1630
1631
@param[in] TokenNumber The PCD token number.
1632
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
1633
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
1634
**/
1635
VOID
1636
EFIAPI
1637
LibPcdGetInfo (
1638
IN UINTN TokenNumber,
1639
OUT PCD_INFO *PcdInfo
1640
);
1641
1642
/**
1643
Retrieve additional information associated with a PCD token.
1644
1645
This includes information such as the type of value the TokenNumber is associated with as well as possible
1646
human readable name that is associated with the token.
1647
1648
If TokenNumber is not in the token space specified by Guid, then ASSERT().
1649
1650
@param[in] Guid The 128-bit unique value that designates the namespace from which to extract the value.
1651
@param[in] TokenNumber The PCD token number.
1652
@param[out] PcdInfo The returned information associated with the requested TokenNumber.
1653
The caller is responsible for freeing the buffer that is allocated by callee for PcdInfo->PcdName.
1654
**/
1655
VOID
1656
EFIAPI
1657
LibPcdGetInfoEx (
1658
IN CONST GUID *Guid,
1659
IN UINTN TokenNumber,
1660
OUT PCD_INFO *PcdInfo
1661
);
1662
1663
/**
1664
Retrieve the currently set SKU Id.
1665
1666
@return The currently set SKU Id. If the platform has not set at a SKU Id, then the
1667
default SKU Id value of 0 is returned. If the platform has set a SKU Id, then the currently set SKU
1668
Id is returned.
1669
**/
1670
UINTN
1671
EFIAPI
1672
LibPcdGetSku (
1673
VOID
1674
);
1675
1676
#endif
1677
1678