1*f334afcfSToomas Soome /** @file
2*f334afcfSToomas Soome   Native Platform Configuration Database (PCD) Protocol
3*f334afcfSToomas Soome 
4*f334afcfSToomas Soome   Different with the EFI_PCD_PROTOCOL defined in PI 1.2 specification, the native
5*f334afcfSToomas Soome   PCD protocol provide interfaces for dynamic and dynamic-ex type PCD.
6*f334afcfSToomas Soome   The interfaces in dynamic type PCD do not require the token space guid as parameter,
7*f334afcfSToomas Soome   but interfaces in dynamic-ex type PCD require token space guid as parameter.
8*f334afcfSToomas Soome 
9*f334afcfSToomas Soome Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
10*f334afcfSToomas Soome SPDX-License-Identifier: BSD-2-Clause-Patent
11*f334afcfSToomas Soome 
12*f334afcfSToomas Soome   @par Revision Reference:
13*f334afcfSToomas Soome   This Protocol was introduced in PI Specification 1.2.
14*f334afcfSToomas Soome 
15*f334afcfSToomas Soome **/
16*f334afcfSToomas Soome 
17*f334afcfSToomas Soome #ifndef __PCD_H__
18*f334afcfSToomas Soome #define __PCD_H__
19*f334afcfSToomas Soome 
20*f334afcfSToomas Soome extern EFI_GUID  gPcdProtocolGuid;
21*f334afcfSToomas Soome 
22*f334afcfSToomas Soome #define PCD_PROTOCOL_GUID \
23*f334afcfSToomas Soome   { 0x11b34006, 0xd85b, 0x4d0a, { 0xa2, 0x90, 0xd5, 0xa5, 0x71, 0x31, 0xe, 0xf7 } }
24*f334afcfSToomas Soome 
25*f334afcfSToomas Soome #define PCD_INVALID_TOKEN_NUMBER  ((UINTN) 0)
26*f334afcfSToomas Soome 
27*f334afcfSToomas Soome /**
28*f334afcfSToomas Soome   Sets the SKU value for subsequent calls to set or get PCD token values.
29*f334afcfSToomas Soome 
30*f334afcfSToomas Soome   SetSku() sets the SKU Id to be used for subsequent calls to set or get PCD values.
31*f334afcfSToomas Soome   SetSku() is normally called only once by the system.
32*f334afcfSToomas Soome 
33*f334afcfSToomas Soome   For each item (token), the database can hold a single value that applies to all SKUs,
34*f334afcfSToomas Soome   or multiple values, where each value is associated with a specific SKU Id. Items with multiple,
35*f334afcfSToomas Soome   SKU-specific values are called SKU enabled.
36*f334afcfSToomas Soome 
37*f334afcfSToomas Soome   The SKU Id of zero is reserved as a default. The valid SkuId range is 1 to 255.
38*f334afcfSToomas Soome   For tokens that are not SKU enabled, the system ignores any set SKU Id and works with the
39*f334afcfSToomas Soome   single value for that token. For SKU-enabled tokens, the system will use the SKU Id set by the
40*f334afcfSToomas Soome   last call to SetSku(). If no SKU Id is set or the currently set SKU Id isn't valid for the specified token,
41*f334afcfSToomas Soome   the system uses the default SKU Id. If the system attempts to use the default SKU Id and no value has been
42*f334afcfSToomas Soome   set for that Id, the results are unpredictable.
43*f334afcfSToomas Soome 
44*f334afcfSToomas Soome   @param[in]  SkuId The SKU value that will be used when the PCD service will retrieve and
45*f334afcfSToomas Soome                     set values associated with a PCD token.
46*f334afcfSToomas Soome 
47*f334afcfSToomas Soome 
48*f334afcfSToomas Soome **/
49*f334afcfSToomas Soome typedef
50*f334afcfSToomas Soome VOID
51*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET_SKU)(
52*f334afcfSToomas Soome   IN  UINTN                  SkuId
53*f334afcfSToomas Soome   );
54*f334afcfSToomas Soome 
55*f334afcfSToomas Soome /**
56*f334afcfSToomas Soome   Retrieves an 8-bit value for a given PCD token.
57*f334afcfSToomas Soome 
58*f334afcfSToomas Soome   Retrieves the current byte-sized value for a PCD token number.
59*f334afcfSToomas Soome   If the TokenNumber is invalid, the results are unpredictable.
60*f334afcfSToomas Soome 
61*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
62*f334afcfSToomas Soome 
63*f334afcfSToomas Soome   @return The UINT8 value.
64*f334afcfSToomas Soome 
65*f334afcfSToomas Soome **/
66*f334afcfSToomas Soome typedef
67*f334afcfSToomas Soome UINT8
68*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET8)(
69*f334afcfSToomas Soome   IN UINTN             TokenNumber
70*f334afcfSToomas Soome   );
71*f334afcfSToomas Soome 
72*f334afcfSToomas Soome /**
73*f334afcfSToomas Soome   Retrieves a 16-bit value for a given PCD token.
74*f334afcfSToomas Soome 
75*f334afcfSToomas Soome   Retrieves the current 16-bit value for a PCD token number.
76*f334afcfSToomas Soome   If the TokenNumber is invalid, the results are unpredictable.
77*f334afcfSToomas Soome 
78*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
79*f334afcfSToomas Soome 
80*f334afcfSToomas Soome   @return The UINT16 value.
81*f334afcfSToomas Soome 
82*f334afcfSToomas Soome **/
83*f334afcfSToomas Soome typedef
84*f334afcfSToomas Soome UINT16
85*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET16)(
86*f334afcfSToomas Soome   IN UINTN             TokenNumber
87*f334afcfSToomas Soome   );
88*f334afcfSToomas Soome 
89*f334afcfSToomas Soome /**
90*f334afcfSToomas Soome   Retrieves a 32-bit value for a given PCD token.
91*f334afcfSToomas Soome 
92*f334afcfSToomas Soome   Retrieves the current 32-bit value for a PCD token number.
93*f334afcfSToomas Soome   If the TokenNumber is invalid, the results are unpredictable.
94*f334afcfSToomas Soome 
95*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
96*f334afcfSToomas Soome 
97*f334afcfSToomas Soome   @return The UINT32 value.
98*f334afcfSToomas Soome 
99*f334afcfSToomas Soome **/
100*f334afcfSToomas Soome typedef
101*f334afcfSToomas Soome UINT32
102*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET32)(
103*f334afcfSToomas Soome   IN UINTN             TokenNumber
104*f334afcfSToomas Soome   );
105*f334afcfSToomas Soome 
106*f334afcfSToomas Soome /**
107*f334afcfSToomas Soome   Retrieves a 64-bit value for a given PCD token.
108*f334afcfSToomas Soome 
109*f334afcfSToomas Soome   Retrieves the current 64-bit value for a PCD token number.
110*f334afcfSToomas Soome   If the TokenNumber is invalid, the results are unpredictable.
111*f334afcfSToomas Soome 
112*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
113*f334afcfSToomas Soome 
114*f334afcfSToomas Soome   @return The UINT64 value.
115*f334afcfSToomas Soome 
116*f334afcfSToomas Soome **/
117*f334afcfSToomas Soome typedef
118*f334afcfSToomas Soome UINT64
119*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET64)(
120*f334afcfSToomas Soome   IN UINTN             TokenNumber
121*f334afcfSToomas Soome   );
122*f334afcfSToomas Soome 
123*f334afcfSToomas Soome /**
124*f334afcfSToomas Soome   Retrieves a pointer to a value for a given PCD token.
125*f334afcfSToomas Soome 
126*f334afcfSToomas Soome   Retrieves the current pointer to the buffer for a PCD token number.
127*f334afcfSToomas Soome   Do not make any assumptions about the alignment of the pointer that
128*f334afcfSToomas Soome   is returned by this function call.  If the TokenNumber is invalid,
129*f334afcfSToomas Soome   the results are unpredictable.
130*f334afcfSToomas Soome 
131*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
132*f334afcfSToomas Soome 
133*f334afcfSToomas Soome   @return The pointer to the buffer to be retrived.
134*f334afcfSToomas Soome 
135*f334afcfSToomas Soome **/
136*f334afcfSToomas Soome typedef
137*f334afcfSToomas Soome VOID *
138*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_POINTER)(
139*f334afcfSToomas Soome   IN UINTN             TokenNumber
140*f334afcfSToomas Soome   );
141*f334afcfSToomas Soome 
142*f334afcfSToomas Soome /**
143*f334afcfSToomas Soome   Retrieves a Boolean value for a given PCD token.
144*f334afcfSToomas Soome 
145*f334afcfSToomas Soome   Retrieves the current boolean value for a PCD token number.
146*f334afcfSToomas Soome   Do not make any assumptions about the alignment of the pointer that
147*f334afcfSToomas Soome   is returned by this function call.  If the TokenNumber is invalid,
148*f334afcfSToomas Soome   the results are unpredictable.
149*f334afcfSToomas Soome 
150*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
151*f334afcfSToomas Soome 
152*f334afcfSToomas Soome   @return The Boolean value.
153*f334afcfSToomas Soome 
154*f334afcfSToomas Soome **/
155*f334afcfSToomas Soome typedef
156*f334afcfSToomas Soome BOOLEAN
157*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_BOOLEAN)(
158*f334afcfSToomas Soome   IN UINTN             TokenNumber
159*f334afcfSToomas Soome   );
160*f334afcfSToomas Soome 
161*f334afcfSToomas Soome /**
162*f334afcfSToomas Soome   Retrieves the size of the value for a given PCD token.
163*f334afcfSToomas Soome 
164*f334afcfSToomas Soome   Retrieves the current size of a particular PCD token.
165*f334afcfSToomas Soome   If the TokenNumber is invalid, the results are unpredictable.
166*f334afcfSToomas Soome 
167*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
168*f334afcfSToomas Soome 
169*f334afcfSToomas Soome   @return The size of the value for the PCD token.
170*f334afcfSToomas Soome 
171*f334afcfSToomas Soome **/
172*f334afcfSToomas Soome typedef
173*f334afcfSToomas Soome UINTN
174*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_SIZE)(
175*f334afcfSToomas Soome   IN UINTN             TokenNumber
176*f334afcfSToomas Soome   );
177*f334afcfSToomas Soome 
178*f334afcfSToomas Soome /**
179*f334afcfSToomas Soome   Retrieves an 8-bit value for a given PCD token.
180*f334afcfSToomas Soome 
181*f334afcfSToomas Soome   Retrieves the 8-bit value of a particular PCD token.
182*f334afcfSToomas Soome   If the TokenNumber is invalid or the token space
183*f334afcfSToomas Soome   specified by Guid does not exist, the results are
184*f334afcfSToomas Soome   unpredictable.
185*f334afcfSToomas Soome 
186*f334afcfSToomas Soome   @param[in]  Guid        The token space for the token number.
187*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
188*f334afcfSToomas Soome 
189*f334afcfSToomas Soome   @return The size 8-bit value for the PCD token.
190*f334afcfSToomas Soome 
191*f334afcfSToomas Soome **/
192*f334afcfSToomas Soome typedef
193*f334afcfSToomas Soome UINT8
194*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_EX_8)(
195*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
196*f334afcfSToomas Soome   IN UINTN             TokenNumber
197*f334afcfSToomas Soome   );
198*f334afcfSToomas Soome 
199*f334afcfSToomas Soome /**
200*f334afcfSToomas Soome   Retrieves a 16-bit value for a given PCD token.
201*f334afcfSToomas Soome 
202*f334afcfSToomas Soome   Retrieves the 16-bit value of a particular PCD token.
203*f334afcfSToomas Soome   If the TokenNumber is invalid or the token space
204*f334afcfSToomas Soome   specified by Guid does not exist, the results are
205*f334afcfSToomas Soome   unpredictable.
206*f334afcfSToomas Soome 
207*f334afcfSToomas Soome   @param[in]  Guid        The token space for the token number.
208*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
209*f334afcfSToomas Soome 
210*f334afcfSToomas Soome   @return The size 16-bit value for the PCD token.
211*f334afcfSToomas Soome 
212*f334afcfSToomas Soome **/
213*f334afcfSToomas Soome typedef
214*f334afcfSToomas Soome UINT16
215*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_EX_16)(
216*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
217*f334afcfSToomas Soome   IN UINTN             TokenNumber
218*f334afcfSToomas Soome   );
219*f334afcfSToomas Soome 
220*f334afcfSToomas Soome /**
221*f334afcfSToomas Soome   Retrieves a 32-bit value for a given PCD token.
222*f334afcfSToomas Soome 
223*f334afcfSToomas Soome   Retrieves the 32-bit value of a particular PCD token.
224*f334afcfSToomas Soome   If the TokenNumber is invalid or the token space
225*f334afcfSToomas Soome   specified by Guid does not exist, the results are
226*f334afcfSToomas Soome   unpredictable.
227*f334afcfSToomas Soome 
228*f334afcfSToomas Soome   @param[in]  Guid        The token space for the token number.
229*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
230*f334afcfSToomas Soome 
231*f334afcfSToomas Soome   @return The size 32-bit value for the PCD token.
232*f334afcfSToomas Soome 
233*f334afcfSToomas Soome **/
234*f334afcfSToomas Soome typedef
235*f334afcfSToomas Soome UINT32
236*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_EX_32)(
237*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
238*f334afcfSToomas Soome   IN UINTN             TokenNumber
239*f334afcfSToomas Soome   );
240*f334afcfSToomas Soome 
241*f334afcfSToomas Soome /**
242*f334afcfSToomas Soome   Retrieves an 64-bit value for a given PCD token.
243*f334afcfSToomas Soome 
244*f334afcfSToomas Soome   Retrieves the 64-bit value of a particular PCD token.
245*f334afcfSToomas Soome   If the TokenNumber is invalid or the token space
246*f334afcfSToomas Soome   specified by Guid does not exist, the results are
247*f334afcfSToomas Soome   unpredictable.
248*f334afcfSToomas Soome 
249*f334afcfSToomas Soome   @param[in]  Guid        The token space for the token number.
250*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
251*f334afcfSToomas Soome 
252*f334afcfSToomas Soome   @return The size 64-bit value for the PCD token.
253*f334afcfSToomas Soome 
254*f334afcfSToomas Soome **/
255*f334afcfSToomas Soome typedef
256*f334afcfSToomas Soome UINT64
257*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_EX_64)(
258*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
259*f334afcfSToomas Soome   IN UINTN             TokenNumber
260*f334afcfSToomas Soome   );
261*f334afcfSToomas Soome 
262*f334afcfSToomas Soome /**
263*f334afcfSToomas Soome   Retrieves a pointer to a value for a given PCD token.
264*f334afcfSToomas Soome 
265*f334afcfSToomas Soome   Retrieves the current pointer to the buffer for a PCD token number.
266*f334afcfSToomas Soome   Do not make any assumptions about the alignment of the pointer that
267*f334afcfSToomas Soome   is returned by this function call.  If the TokenNumber is invalid,
268*f334afcfSToomas Soome   the results are unpredictable.
269*f334afcfSToomas Soome 
270*f334afcfSToomas Soome   @param[in]  Guid        The token space for the token number.
271*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
272*f334afcfSToomas Soome 
273*f334afcfSToomas Soome   @return The pointer to the buffer to be retrieved.
274*f334afcfSToomas Soome 
275*f334afcfSToomas Soome **/
276*f334afcfSToomas Soome typedef
277*f334afcfSToomas Soome VOID *
278*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_EX_POINTER)(
279*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
280*f334afcfSToomas Soome   IN UINTN             TokenNumber
281*f334afcfSToomas Soome   );
282*f334afcfSToomas Soome 
283*f334afcfSToomas Soome /**
284*f334afcfSToomas Soome   Retrieves a Boolean value for a given PCD token.
285*f334afcfSToomas Soome 
286*f334afcfSToomas Soome   Retrieves the Boolean value of a particular PCD token.
287*f334afcfSToomas Soome   If the TokenNumber is invalid or the token space
288*f334afcfSToomas Soome   specified by Guid does not exist, the results are
289*f334afcfSToomas Soome   unpredictable.
290*f334afcfSToomas Soome 
291*f334afcfSToomas Soome   @param[in]  Guid        The token space for the token number.
292*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
293*f334afcfSToomas Soome 
294*f334afcfSToomas Soome   @return The size Boolean value for the PCD token.
295*f334afcfSToomas Soome 
296*f334afcfSToomas Soome **/
297*f334afcfSToomas Soome typedef
298*f334afcfSToomas Soome BOOLEAN
299*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_EX_BOOLEAN)(
300*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
301*f334afcfSToomas Soome   IN UINTN             TokenNumber
302*f334afcfSToomas Soome   );
303*f334afcfSToomas Soome 
304*f334afcfSToomas Soome /**
305*f334afcfSToomas Soome   Retrieves the size of the value for a given PCD token.
306*f334afcfSToomas Soome 
307*f334afcfSToomas Soome   Retrieves the current size of a particular PCD token.
308*f334afcfSToomas Soome   If the TokenNumber is invalid, the results are unpredictable.
309*f334afcfSToomas Soome 
310*f334afcfSToomas Soome   @param[in]  Guid        The token space for the token number.
311*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
312*f334afcfSToomas Soome 
313*f334afcfSToomas Soome   @return The size of the value for the PCD token.
314*f334afcfSToomas Soome 
315*f334afcfSToomas Soome **/
316*f334afcfSToomas Soome typedef
317*f334afcfSToomas Soome UINTN
318*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_EX_SIZE)(
319*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
320*f334afcfSToomas Soome   IN UINTN             TokenNumber
321*f334afcfSToomas Soome   );
322*f334afcfSToomas Soome 
323*f334afcfSToomas Soome /**
324*f334afcfSToomas Soome   Sets an 8-bit value for a given PCD token.
325*f334afcfSToomas Soome 
326*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
327*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
328*f334afcfSToomas Soome   If it is not, an error will be returned.
329*f334afcfSToomas Soome 
330*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
331*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
332*f334afcfSToomas Soome 
333*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
334*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
335*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
336*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
337*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
338*f334afcfSToomas Soome 
339*f334afcfSToomas Soome **/
340*f334afcfSToomas Soome typedef
341*f334afcfSToomas Soome EFI_STATUS
342*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET8)(
343*f334afcfSToomas Soome   IN UINTN             TokenNumber,
344*f334afcfSToomas Soome   IN UINT8             Value
345*f334afcfSToomas Soome   );
346*f334afcfSToomas Soome 
347*f334afcfSToomas Soome /**
348*f334afcfSToomas Soome   Sets a 16-bit value for a given PCD token.
349*f334afcfSToomas Soome 
350*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
351*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
352*f334afcfSToomas Soome   If it is not, an error will be returned.
353*f334afcfSToomas Soome 
354*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
355*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
356*f334afcfSToomas Soome 
357*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
358*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
359*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
360*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
361*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
362*f334afcfSToomas Soome 
363*f334afcfSToomas Soome **/
364*f334afcfSToomas Soome typedef
365*f334afcfSToomas Soome EFI_STATUS
366*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET16)(
367*f334afcfSToomas Soome   IN UINTN              TokenNumber,
368*f334afcfSToomas Soome   IN UINT16             Value
369*f334afcfSToomas Soome   );
370*f334afcfSToomas Soome 
371*f334afcfSToomas Soome /**
372*f334afcfSToomas Soome   Sets a 32-bit value for a given PCD token.
373*f334afcfSToomas Soome 
374*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
375*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
376*f334afcfSToomas Soome   If it is not, an error will be returned.
377*f334afcfSToomas Soome 
378*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
379*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
380*f334afcfSToomas Soome 
381*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
382*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
383*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
384*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
385*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
386*f334afcfSToomas Soome 
387*f334afcfSToomas Soome **/
388*f334afcfSToomas Soome typedef
389*f334afcfSToomas Soome EFI_STATUS
390*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET32)(
391*f334afcfSToomas Soome   IN UINTN              TokenNumber,
392*f334afcfSToomas Soome   IN UINT32             Value
393*f334afcfSToomas Soome   );
394*f334afcfSToomas Soome 
395*f334afcfSToomas Soome /**
396*f334afcfSToomas Soome   Sets a 64-bit value for a given PCD token.
397*f334afcfSToomas Soome 
398*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
399*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
400*f334afcfSToomas Soome   If it is not, an error will be returned.
401*f334afcfSToomas Soome 
402*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
403*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
404*f334afcfSToomas Soome 
405*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
406*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
407*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
408*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
409*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
410*f334afcfSToomas Soome 
411*f334afcfSToomas Soome **/
412*f334afcfSToomas Soome typedef
413*f334afcfSToomas Soome EFI_STATUS
414*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET64)(
415*f334afcfSToomas Soome   IN UINTN             TokenNumber,
416*f334afcfSToomas Soome   IN UINT64            Value
417*f334afcfSToomas Soome   );
418*f334afcfSToomas Soome 
419*f334afcfSToomas Soome /**
420*f334afcfSToomas Soome   Sets a value of a specified size for a given PCD token.
421*f334afcfSToomas Soome 
422*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
423*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
424*f334afcfSToomas Soome   If it is not, an error will be returned.
425*f334afcfSToomas Soome 
426*f334afcfSToomas Soome   @param[in]      TokenNumber  The PCD token number.
427*f334afcfSToomas Soome   @param[in, out] SizeOfBuffer A pointer to the length of the value being set for the PCD token.
428*f334afcfSToomas Soome                                On input, if the SizeOfValue is greater than the maximum size supported
429*f334afcfSToomas Soome                                for this TokenNumber then the output value of SizeOfValue will reflect
430*f334afcfSToomas Soome                                the maximum size supported for this TokenNumber.
431*f334afcfSToomas Soome   @param[in]      Buffer       The buffer to set for the PCD token.
432*f334afcfSToomas Soome 
433*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
434*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
435*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
436*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
437*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
438*f334afcfSToomas Soome 
439*f334afcfSToomas Soome **/
440*f334afcfSToomas Soome typedef
441*f334afcfSToomas Soome EFI_STATUS
442*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET_POINTER)(
443*f334afcfSToomas Soome   IN      UINTN             TokenNumber,
444*f334afcfSToomas Soome   IN OUT  UINTN             *SizeOfBuffer,
445*f334afcfSToomas Soome   IN      VOID              *Buffer
446*f334afcfSToomas Soome   );
447*f334afcfSToomas Soome 
448*f334afcfSToomas Soome /**
449*f334afcfSToomas Soome   Sets a Boolean value for a given PCD token.
450*f334afcfSToomas Soome 
451*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
452*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
453*f334afcfSToomas Soome   If it is not, an error will be returned.
454*f334afcfSToomas Soome 
455*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
456*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
457*f334afcfSToomas Soome 
458*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
459*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
460*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
461*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
462*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
463*f334afcfSToomas Soome 
464*f334afcfSToomas Soome **/
465*f334afcfSToomas Soome typedef
466*f334afcfSToomas Soome EFI_STATUS
467*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET_BOOLEAN)(
468*f334afcfSToomas Soome   IN UINTN             TokenNumber,
469*f334afcfSToomas Soome   IN BOOLEAN           Value
470*f334afcfSToomas Soome   );
471*f334afcfSToomas Soome 
472*f334afcfSToomas Soome /**
473*f334afcfSToomas Soome   Sets an 8-bit value for a given PCD token.
474*f334afcfSToomas Soome 
475*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
476*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
477*f334afcfSToomas Soome   If it is not, an error will be returned.
478*f334afcfSToomas Soome 
479*f334afcfSToomas Soome   @param[in]  Guid        The 128-bit unique value that designates the namespace from which to extract the value.
480*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
481*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
482*f334afcfSToomas Soome 
483*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
484*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
485*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
486*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
487*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
488*f334afcfSToomas Soome 
489*f334afcfSToomas Soome **/
490*f334afcfSToomas Soome typedef
491*f334afcfSToomas Soome EFI_STATUS
492*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET_EX_8)(
493*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
494*f334afcfSToomas Soome   IN UINTN             TokenNumber,
495*f334afcfSToomas Soome   IN UINT8             Value
496*f334afcfSToomas Soome   );
497*f334afcfSToomas Soome 
498*f334afcfSToomas Soome /**
499*f334afcfSToomas Soome   Sets an 16-bit value for a given PCD token.
500*f334afcfSToomas Soome 
501*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
502*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
503*f334afcfSToomas Soome   If it is not, an error will be returned.
504*f334afcfSToomas Soome 
505*f334afcfSToomas Soome   @param[in]  Guid        The 128-bit unique value that designates the namespace from which to extract the value.
506*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
507*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
508*f334afcfSToomas Soome 
509*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
510*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
511*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
512*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
513*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
514*f334afcfSToomas Soome 
515*f334afcfSToomas Soome **/
516*f334afcfSToomas Soome typedef
517*f334afcfSToomas Soome EFI_STATUS
518*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET_EX_16)(
519*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
520*f334afcfSToomas Soome   IN UINTN             TokenNumber,
521*f334afcfSToomas Soome   IN UINT16            Value
522*f334afcfSToomas Soome   );
523*f334afcfSToomas Soome 
524*f334afcfSToomas Soome /**
525*f334afcfSToomas Soome   Sets a 32-bit value for a given PCD token.
526*f334afcfSToomas Soome 
527*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
528*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
529*f334afcfSToomas Soome   If it is not, an error will be returned.
530*f334afcfSToomas Soome 
531*f334afcfSToomas Soome   @param[in]  Guid        The 128-bit unique value that designates the namespace from which to extract the value.
532*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
533*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
534*f334afcfSToomas Soome 
535*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
536*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
537*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
538*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
539*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
540*f334afcfSToomas Soome 
541*f334afcfSToomas Soome **/
542*f334afcfSToomas Soome typedef
543*f334afcfSToomas Soome EFI_STATUS
544*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET_EX_32)(
545*f334afcfSToomas Soome   IN CONST EFI_GUID     *Guid,
546*f334afcfSToomas Soome   IN UINTN              TokenNumber,
547*f334afcfSToomas Soome   IN UINT32             Value
548*f334afcfSToomas Soome   );
549*f334afcfSToomas Soome 
550*f334afcfSToomas Soome /**
551*f334afcfSToomas Soome   Sets a 64-bit value for a given PCD token.
552*f334afcfSToomas Soome 
553*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
554*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
555*f334afcfSToomas Soome   If it is not, an error will be returned.
556*f334afcfSToomas Soome 
557*f334afcfSToomas Soome   @param[in]  Guid        The 128-bit unique value that designates the namespace from which to extract the value.
558*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
559*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
560*f334afcfSToomas Soome 
561*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
562*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
563*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
564*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
565*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
566*f334afcfSToomas Soome 
567*f334afcfSToomas Soome **/
568*f334afcfSToomas Soome typedef
569*f334afcfSToomas Soome EFI_STATUS
570*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET_EX_64)(
571*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
572*f334afcfSToomas Soome   IN UINTN             TokenNumber,
573*f334afcfSToomas Soome   IN UINT64            Value
574*f334afcfSToomas Soome   );
575*f334afcfSToomas Soome 
576*f334afcfSToomas Soome /**
577*f334afcfSToomas Soome   Sets a value of a specified size for a given PCD token.
578*f334afcfSToomas Soome 
579*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
580*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
581*f334afcfSToomas Soome   If it is not, an error will be returned.
582*f334afcfSToomas Soome 
583*f334afcfSToomas Soome   @param[in]  Guid            The 128-bit unique value that designates the namespace from which to extract the value.
584*f334afcfSToomas Soome   @param[in]  TokenNumber     The PCD token number.
585*f334afcfSToomas Soome   @param[in, out] SizeOfBuffer A pointer to the length of the value being set for the PCD token.
586*f334afcfSToomas Soome                               On input, if the SizeOfValue is greater than the maximum size supported
587*f334afcfSToomas Soome                               for this TokenNumber then the output value of SizeOfValue will reflect
588*f334afcfSToomas Soome                               the maximum size supported for this TokenNumber.
589*f334afcfSToomas Soome   @param[in]  Buffer          The buffer to set for the PCD token.
590*f334afcfSToomas Soome 
591*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
592*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
593*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
594*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
595*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
596*f334afcfSToomas Soome 
597*f334afcfSToomas Soome **/
598*f334afcfSToomas Soome typedef
599*f334afcfSToomas Soome EFI_STATUS
600*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET_EX_POINTER)(
601*f334afcfSToomas Soome   IN CONST EFI_GUID          *Guid,
602*f334afcfSToomas Soome   IN       UINTN             TokenNumber,
603*f334afcfSToomas Soome   IN OUT   UINTN             *SizeOfBuffer,
604*f334afcfSToomas Soome   IN       VOID              *Buffer
605*f334afcfSToomas Soome   );
606*f334afcfSToomas Soome 
607*f334afcfSToomas Soome /**
608*f334afcfSToomas Soome   Sets a Boolean value for a given PCD token.
609*f334afcfSToomas Soome 
610*f334afcfSToomas Soome   When the PCD service sets a value, it will check to ensure that the
611*f334afcfSToomas Soome   size of the value being set is compatible with the Token's existing definition.
612*f334afcfSToomas Soome   If it is not, an error will be returned.
613*f334afcfSToomas Soome 
614*f334afcfSToomas Soome   @param[in]  Guid        The 128-bit unique value that designates the namespace from which to extract the value.
615*f334afcfSToomas Soome   @param[in]  TokenNumber The PCD token number.
616*f334afcfSToomas Soome   @param[in]  Value       The value to set for the PCD token.
617*f334afcfSToomas Soome 
618*f334afcfSToomas Soome   @retval EFI_SUCCESS  The procedure returned successfully.
619*f334afcfSToomas Soome   @retval EFI_INVALID_PARAMETER The PCD service determined that the size of the data
620*f334afcfSToomas Soome                                   being set was incompatible with a call to this function.
621*f334afcfSToomas Soome                                   Use GetSize() to retrieve the size of the target data.
622*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the requested token number.
623*f334afcfSToomas Soome 
624*f334afcfSToomas Soome **/
625*f334afcfSToomas Soome typedef
626*f334afcfSToomas Soome EFI_STATUS
627*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_SET_EX_BOOLEAN)(
628*f334afcfSToomas Soome   IN CONST EFI_GUID    *Guid,
629*f334afcfSToomas Soome   IN UINTN             TokenNumber,
630*f334afcfSToomas Soome   IN BOOLEAN           Value
631*f334afcfSToomas Soome   );
632*f334afcfSToomas Soome 
633*f334afcfSToomas Soome /**
634*f334afcfSToomas Soome   Callback on SET function prototype definition.
635*f334afcfSToomas Soome 
636*f334afcfSToomas Soome   This notification function serves two purposes.
637*f334afcfSToomas Soome   Firstly, it notifies the module which did the registration that the value
638*f334afcfSToomas Soome   of this PCD token has been set. Secondly, it provides a mechanism for the
639*f334afcfSToomas Soome   module that did the registration to intercept the set operation and override
640*f334afcfSToomas Soome   the value that has been set, if necessary. After the invocation of the callback function,
641*f334afcfSToomas Soome   TokenData will be used by PCD service DXE driver to modify the internal data in
642*f334afcfSToomas Soome   PCD database.
643*f334afcfSToomas Soome 
644*f334afcfSToomas Soome   @param[in]  CallBackGuid    The PCD token GUID being set.
645*f334afcfSToomas Soome   @param[in]  CallBackToken   The PCD token number being set.
646*f334afcfSToomas Soome   @param[in, out] TokenData   A pointer to the token data being set.
647*f334afcfSToomas Soome   @param[in]  TokenDataSize   The size, in bytes, of the data being set.
648*f334afcfSToomas Soome 
649*f334afcfSToomas Soome   @retval VOID
650*f334afcfSToomas Soome 
651*f334afcfSToomas Soome **/
652*f334afcfSToomas Soome typedef
653*f334afcfSToomas Soome VOID
654*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_CALLBACK)(
655*f334afcfSToomas Soome   IN CONST EFI_GUID         *CallBackGuid  OPTIONAL,
656*f334afcfSToomas Soome   IN       UINTN            CallBackToken,
657*f334afcfSToomas Soome   IN OUT   VOID             *TokenData,
658*f334afcfSToomas Soome   IN       UINTN            TokenDataSize
659*f334afcfSToomas Soome   );
660*f334afcfSToomas Soome 
661*f334afcfSToomas Soome /**
662*f334afcfSToomas Soome   Specifies a function to be called anytime the value of a designated token is changed.
663*f334afcfSToomas Soome 
664*f334afcfSToomas Soome   @param[in]  TokenNumber       The PCD token number.
665*f334afcfSToomas Soome   @param[in]  Guid              The 128-bit unique value that designates the namespace from which to extract the value.
666*f334afcfSToomas Soome   @param[in]  CallBackFunction  The function prototype called when the value associated with the CallBackToken is set.
667*f334afcfSToomas Soome 
668*f334afcfSToomas Soome   @retval EFI_SUCCESS   The PCD service has successfully established a call event
669*f334afcfSToomas Soome                         for the CallBackToken requested.
670*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the referenced token number.
671*f334afcfSToomas Soome 
672*f334afcfSToomas Soome **/
673*f334afcfSToomas Soome typedef
674*f334afcfSToomas Soome EFI_STATUS
675*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_CALLBACK_ONSET)(
676*f334afcfSToomas Soome   IN  CONST EFI_GUID          *Guid  OPTIONAL,
677*f334afcfSToomas Soome   IN  UINTN                   TokenNumber,
678*f334afcfSToomas Soome   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
679*f334afcfSToomas Soome   );
680*f334afcfSToomas Soome 
681*f334afcfSToomas Soome /**
682*f334afcfSToomas Soome   Cancels a previously set callback function for a particular PCD token number.
683*f334afcfSToomas Soome 
684*f334afcfSToomas Soome   @param[in]  TokenNumber      The PCD token number.
685*f334afcfSToomas Soome   @param[in]  Guid             The 128-bit unique value that designates the namespace from which to extract the value.
686*f334afcfSToomas Soome   @param[in]  CallBackFunction The function prototype called when the value associated with the CallBackToken is set.
687*f334afcfSToomas Soome 
688*f334afcfSToomas Soome   @retval EFI_SUCCESS   The PCD service has successfully established a call event
689*f334afcfSToomas Soome                         for the CallBackToken requested.
690*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find the referenced token number.
691*f334afcfSToomas Soome 
692*f334afcfSToomas Soome **/
693*f334afcfSToomas Soome typedef
694*f334afcfSToomas Soome EFI_STATUS
695*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_CANCEL_CALLBACK)(
696*f334afcfSToomas Soome   IN  CONST EFI_GUID          *Guid  OPTIONAL,
697*f334afcfSToomas Soome   IN  UINTN                   TokenNumber,
698*f334afcfSToomas Soome   IN  PCD_PROTOCOL_CALLBACK   CallBackFunction
699*f334afcfSToomas Soome   );
700*f334afcfSToomas Soome 
701*f334afcfSToomas Soome /**
702*f334afcfSToomas Soome   Retrieves the next valid token number in a given namespace.
703*f334afcfSToomas Soome 
704*f334afcfSToomas Soome   This is useful since the PCD infrastructure contains a sparse list of token numbers,
705*f334afcfSToomas Soome   and one cannot a priori know what token numbers are valid in the database.
706*f334afcfSToomas Soome 
707*f334afcfSToomas Soome   If TokenNumber is 0 and Guid is not NULL, then the first token from the token space specified by Guid is returned.
708*f334afcfSToomas Soome   If TokenNumber is not 0 and Guid is not NULL, then the next token in the token space specified by Guid is returned.
709*f334afcfSToomas Soome   If TokenNumber is 0 and Guid is NULL, then the first token in the default token space is returned.
710*f334afcfSToomas Soome   If TokenNumber is not 0 and Guid is NULL, then the next token in the default token space is returned.
711*f334afcfSToomas Soome   The token numbers in the default token space may not be related to token numbers in token spaces that are named by Guid.
712*f334afcfSToomas Soome   If the next token number can be retrieved, then it is returned in TokenNumber, and EFI_SUCCESS is returned.
713*f334afcfSToomas Soome   If TokenNumber represents the last token number in the token space specified by Guid, then EFI_NOT_FOUND is returned.
714*f334afcfSToomas Soome   If TokenNumber is not present in the token space specified by Guid, then EFI_NOT_FOUND is returned.
715*f334afcfSToomas Soome 
716*f334afcfSToomas Soome 
717*f334afcfSToomas Soome   @param[in]      Guid    The 128-bit unique value that designates the namespace from which to retrieve the next token.
718*f334afcfSToomas Soome                           This is an optional parameter that may be NULL. If this parameter is NULL, then a request is
719*f334afcfSToomas Soome                           being made to retrieve tokens from the default token space.
720*f334afcfSToomas Soome   @param[in,out]  TokenNumber
721*f334afcfSToomas Soome                           A pointer to the PCD token number to use to find the subsequent token number.
722*f334afcfSToomas Soome 
723*f334afcfSToomas Soome   @retval EFI_SUCCESS   The PCD service has retrieved the next valid token number.
724*f334afcfSToomas Soome   @retval EFI_NOT_FOUND The PCD service could not find data from the requested token number.
725*f334afcfSToomas Soome 
726*f334afcfSToomas Soome **/
727*f334afcfSToomas Soome typedef
728*f334afcfSToomas Soome EFI_STATUS
729*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_NEXT_TOKEN)(
730*f334afcfSToomas Soome   IN      CONST EFI_GUID      *Guid  OPTIONAL,
731*f334afcfSToomas Soome   IN OUT  UINTN               *TokenNumber
732*f334afcfSToomas Soome   );
733*f334afcfSToomas Soome 
734*f334afcfSToomas Soome /**
735*f334afcfSToomas Soome   Retrieves the next valid PCD token namespace for a given namespace.
736*f334afcfSToomas Soome 
737*f334afcfSToomas Soome   Gets the next valid token namespace for a given namespace. This is useful to traverse the valid
738*f334afcfSToomas Soome   token namespaces on a platform.
739*f334afcfSToomas Soome 
740*f334afcfSToomas Soome   @param[in, out]   Guid    An indirect pointer to EFI_GUID. On input it designates a known token namespace
741*f334afcfSToomas Soome                             from which the search will start. On output, it designates the next valid token
742*f334afcfSToomas Soome                             namespace on the platform. If *Guid is NULL, then the GUID of the first token
743*f334afcfSToomas Soome                             space of the current platform is returned. If the search cannot locate the next valid
744*f334afcfSToomas Soome                             token namespace, an error is returned and the value of *Guid is undefined.
745*f334afcfSToomas Soome 
746*f334afcfSToomas Soome   @retval   EFI_SUCCESS   The PCD service retrieved the value requested.
747*f334afcfSToomas Soome   @retval   EFI_NOT_FOUND The PCD service could not find the next valid token namespace.
748*f334afcfSToomas Soome 
749*f334afcfSToomas Soome **/
750*f334afcfSToomas Soome typedef
751*f334afcfSToomas Soome EFI_STATUS
752*f334afcfSToomas Soome (EFIAPI *PCD_PROTOCOL_GET_NEXT_TOKENSPACE)(
753*f334afcfSToomas Soome   IN  OUT    CONST EFI_GUID      **Guid
754*f334afcfSToomas Soome   );
755*f334afcfSToomas Soome 
756*f334afcfSToomas Soome ///
757*f334afcfSToomas Soome /// This service abstracts the ability to set/get Platform Configuration Database (PCD).
758*f334afcfSToomas Soome ///
759*f334afcfSToomas Soome typedef struct {
760*f334afcfSToomas Soome   PCD_PROTOCOL_SET_SKU                SetSku;
761*f334afcfSToomas Soome 
762*f334afcfSToomas Soome   PCD_PROTOCOL_GET8                   Get8;
763*f334afcfSToomas Soome   PCD_PROTOCOL_GET16                  Get16;
764*f334afcfSToomas Soome   PCD_PROTOCOL_GET32                  Get32;
765*f334afcfSToomas Soome   PCD_PROTOCOL_GET64                  Get64;
766*f334afcfSToomas Soome   PCD_PROTOCOL_GET_POINTER            GetPtr;
767*f334afcfSToomas Soome   PCD_PROTOCOL_GET_BOOLEAN            GetBool;
768*f334afcfSToomas Soome   PCD_PROTOCOL_GET_SIZE               GetSize;
769*f334afcfSToomas Soome 
770*f334afcfSToomas Soome   PCD_PROTOCOL_GET_EX_8               Get8Ex;
771*f334afcfSToomas Soome   PCD_PROTOCOL_GET_EX_16              Get16Ex;
772*f334afcfSToomas Soome   PCD_PROTOCOL_GET_EX_32              Get32Ex;
773*f334afcfSToomas Soome   PCD_PROTOCOL_GET_EX_64              Get64Ex;
774*f334afcfSToomas Soome   PCD_PROTOCOL_GET_EX_POINTER         GetPtrEx;
775*f334afcfSToomas Soome   PCD_PROTOCOL_GET_EX_BOOLEAN         GetBoolEx;
776*f334afcfSToomas Soome   PCD_PROTOCOL_GET_EX_SIZE            GetSizeEx;
777*f334afcfSToomas Soome 
778*f334afcfSToomas Soome   PCD_PROTOCOL_SET8                   Set8;
779*f334afcfSToomas Soome   PCD_PROTOCOL_SET16                  Set16;
780*f334afcfSToomas Soome   PCD_PROTOCOL_SET32                  Set32;
781*f334afcfSToomas Soome   PCD_PROTOCOL_SET64                  Set64;
782*f334afcfSToomas Soome   PCD_PROTOCOL_SET_POINTER            SetPtr;
783*f334afcfSToomas Soome   PCD_PROTOCOL_SET_BOOLEAN            SetBool;
784*f334afcfSToomas Soome 
785*f334afcfSToomas Soome   PCD_PROTOCOL_SET_EX_8               Set8Ex;
786*f334afcfSToomas Soome   PCD_PROTOCOL_SET_EX_16              Set16Ex;
787*f334afcfSToomas Soome   PCD_PROTOCOL_SET_EX_32              Set32Ex;
788*f334afcfSToomas Soome   PCD_PROTOCOL_SET_EX_64              Set64Ex;
789*f334afcfSToomas Soome   PCD_PROTOCOL_SET_EX_POINTER         SetPtrEx;
790*f334afcfSToomas Soome   PCD_PROTOCOL_SET_EX_BOOLEAN         SetBoolEx;
791*f334afcfSToomas Soome 
792*f334afcfSToomas Soome   PCD_PROTOCOL_CALLBACK_ONSET         CallbackOnSet;
793*f334afcfSToomas Soome   PCD_PROTOCOL_CANCEL_CALLBACK        CancelCallback;
794*f334afcfSToomas Soome   PCD_PROTOCOL_GET_NEXT_TOKEN         GetNextToken;
795*f334afcfSToomas Soome   PCD_PROTOCOL_GET_NEXT_TOKENSPACE    GetNextTokenSpace;
796*f334afcfSToomas Soome } PCD_PROTOCOL;
797*f334afcfSToomas Soome 
798*f334afcfSToomas Soome #endif
799