]> git.proxmox.com Git - mirror_edk2.git/blob - BaseTools/Source/C/Common/PcdValueCommon.h
255afdfcc3ac9555c3c21ab74c1ac8fc3541d98c
[mirror_edk2.git] / BaseTools / Source / C / Common / PcdValueCommon.h
1 /** @file
2 Header file for PcdValue structure definition.
3
4 Copyright (c) 2017, Intel Corporation. All rights reserved.<BR>
5 This program and the accompanying materials
6 are licensed and made available under the terms and conditions of the BSD License
7 which accompanies this distribution. The full text of the license may be found at
8 http://opensource.org/licenses/bsd-license.php
9
10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13 **/
14
15 #ifndef _PCD_VALUE_COMMON_H
16 #define _PCD_VALUE_COMMON_H
17
18 #include <Common/UefiBaseTypes.h>
19 #include <Common/UefiInternalFormRepresentation.h>
20
21 #define __FIELD_SIZE(TYPE, Field) (sizeof((TYPE *)0)->Field)
22 #define __ARRAY_ELEMENT_SIZE(TYPE, Field) (sizeof((TYPE *)0)->Field[0])
23 #define __OFFSET_OF(TYPE, Field) ((UINT32) &(((TYPE *)0)->Field))
24 #define __FLEXIBLE_SIZE(Size, TYPE, Field, MaxIndex) if (__FIELD_SIZE(TYPE, Field) == 0) Size = MAX((__OFFSET_OF(TYPE, Field) + __ARRAY_ELEMENT_SIZE(TYPE, Field) * (MaxIndex)), Size)
25 #define __ARRAY_SIZE(Array) (sizeof(Array)/sizeof(Array[0]))
26
27 #if defined(_MSC_EXTENSIONS)
28 #define __STATIC_ASSERT static_assert
29 #else
30 #define __STATIC_ASSERT _Static_assert
31 #endif
32
33 VOID
34 PcdEntryPoint (
35 VOID
36 )
37 /*++
38
39 Routine Description:
40
41 Main function updates PCD values. It is auto generated by Build
42
43 Arguments:
44
45 None
46
47 Returns:
48 None
49 --*/
50 ;
51
52 int
53 PcdValueMain (
54 int argc,
55 char *argv[]
56 )
57 /*++
58
59 Routine Description:
60
61 Main function updates PCD values.
62
63 Arguments:
64
65 argc Number of command line parameters.
66 argv Array of pointers to parameter strings.
67
68 Returns:
69 EXIT_SUCCESS
70 --*/
71 ;
72
73 VOID
74 __PcdSet (
75 CHAR8 *SkuName OPTIONAL,
76 CHAR8 *DefaultValueName OPTIONAL,
77 CHAR8 *TokenSpaceGuidName,
78 CHAR8 *TokenName,
79 UINT64 Value
80 )
81 /*++
82
83 Routine Description:
84
85 Get PCD value
86
87 Arguments:
88
89 SkuName SkuName String
90 DefaultValueName DefaultValueName String
91 TokenSpaceGuidName TokenSpaceGuidName String
92 TokenName TokenName String
93
94 Returns:
95
96 PCD value
97 --*/
98 ;
99
100 VOID
101 __PcdSet (
102 CHAR8 *SkuName OPTIONAL,
103 CHAR8 *DefaultValueName OPTIONAL,
104 CHAR8 *TokenSpaceGuidName,
105 CHAR8 *TokenName,
106 UINT64 Value
107 )
108 /*++
109
110 Routine Description:
111
112 Set PCD value
113
114 Arguments:
115
116 SkuName SkuName String
117 DefaultValueName DefaultValueName String
118 TokenSpaceGuidName TokenSpaceGuidName String
119 TokenName TokenName String
120 Value PCD value to be set
121
122 Returns:
123
124 None
125 --*/
126 ;
127
128 VOID *
129 __PcdGetPtr (
130 CHAR8 *SkuName OPTIONAL,
131 CHAR8 *DefaultValueName OPTIONAL,
132 CHAR8 *TokenSpaceGuidName,
133 CHAR8 *TokenName,
134 UINT32 *Size
135 )
136 /*++
137
138 Routine Description:
139
140 Get PCD value buffer
141
142 Arguments:
143
144 SkuName SkuName String
145 DefaultValueName DefaultValueName String
146 TokenSpaceGuidName TokenSpaceGuidName String
147 TokenName TokenName String
148 Size Size of PCD value buffer
149
150 Returns:
151
152 PCD value buffer
153 --*/
154 ;
155
156 VOID
157 __PcdSetPtr (
158 CHAR8 *SkuName OPTIONAL,
159 CHAR8 *DefaultValueName OPTIONAL,
160 CHAR8 *TokenSpaceGuidName,
161 CHAR8 *TokenName,
162 UINT32 Size,
163 UINT8 *Value
164 )
165 /*++
166
167 Routine Description:
168
169 Set PCD value buffer
170
171 Arguments:
172
173 SkuName SkuName String
174 DefaultValueName DefaultValueName String
175 TokenSpaceGuidName TokenSpaceGuidName String
176 TokenName TokenName String
177 Size Size of PCD value
178 Value Pointer to the updated PCD value buffer
179
180 Returns:
181
182 None
183 --*/
184 ;
185
186 #define PcdGet(A, B, C, D) __PcdGet(#A, #B, #C, #D)
187 #define PcdSet(A, B, C, D, Value) __PcdSet(#A, #B, #C, #D, Value)
188 #define PcdGetPtr(A, B, C, D, Size) __PcdGetPtr(#A, #B, #C, #D, Size)
189 #define PcdSetPtr(A, B, C, D, Size, Value) __PcdSetPtr(#A, #B, #C, #D, Size, Value)
190
191 #endif