VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/FirmwareNew/MdeModulePkg/Include/Guid/PcdDataBaseSignatureGuid.h@ 77662

最後變更 在這個檔案從77662是 77662,由 vboxsync 提交於 6 年 前

EFI: First step in UDK2018 merge. Does not build yet.

  • 屬性 svn:eol-style 設為 native
檔案大小: 8.1 KB
 
1/** @file
2 Guid for Pcd DataBase Signature.
3
4Copyright (c) 2012 - 2018, Intel Corporation. All rights reserved.<BR>
5This program and the accompanying materials are licensed and made available under
6the terms and conditions of the BSD License that accompanies this distribution.
7The full text of the license may be found at
8http://opensource.org/licenses/bsd-license.php.
9
10THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12
13**/
14
15#ifndef _PCD_DATABASE_SIGNATURE_GUID_H_
16#define _PCD_DATABASE_SIGNATURE_GUID_H_
17
18#define PCD_DATA_BASE_SIGNATURE_GUID \
19{ 0x3c7d193c, 0x682c, 0x4c14, { 0xa6, 0x8f, 0x55, 0x2d, 0xea, 0x4f, 0x43, 0x7e } }
20
21extern EFI_GUID gPcdDataBaseSignatureGuid;
22
23//
24// Common definitions
25//
26typedef UINT64 SKU_ID;
27
28#define PCD_TYPE_SHIFT 28
29
30#define PCD_TYPE_DATA (0x0U << PCD_TYPE_SHIFT)
31#define PCD_TYPE_HII (0x8U << PCD_TYPE_SHIFT)
32#define PCD_TYPE_VPD (0x4U << PCD_TYPE_SHIFT)
33#define PCD_TYPE_STRING (0x1U << PCD_TYPE_SHIFT)
34
35#define PCD_TYPE_ALL_SET (PCD_TYPE_DATA | PCD_TYPE_HII | PCD_TYPE_VPD | PCD_TYPE_STRING)
36
37#define PCD_DATUM_TYPE_SHIFT 24
38
39#define PCD_DATUM_TYPE_POINTER (0x0U << PCD_DATUM_TYPE_SHIFT)
40#define PCD_DATUM_TYPE_UINT8 (0x1U << PCD_DATUM_TYPE_SHIFT)
41#define PCD_DATUM_TYPE_UINT16 (0x2U << PCD_DATUM_TYPE_SHIFT)
42#define PCD_DATUM_TYPE_UINT32 (0x4U << PCD_DATUM_TYPE_SHIFT)
43#define PCD_DATUM_TYPE_UINT64 (0x8U << PCD_DATUM_TYPE_SHIFT)
44
45#define PCD_DATUM_TYPE_ALL_SET (PCD_DATUM_TYPE_POINTER | \
46 PCD_DATUM_TYPE_UINT8 | \
47 PCD_DATUM_TYPE_UINT16 | \
48 PCD_DATUM_TYPE_UINT32 | \
49 PCD_DATUM_TYPE_UINT64)
50
51#define PCD_DATUM_TYPE_SHIFT2 20
52
53#define PCD_DATUM_TYPE_UINT8_BOOLEAN (0x1U << PCD_DATUM_TYPE_SHIFT2)
54
55#define PCD_DATABASE_OFFSET_MASK (~(PCD_TYPE_ALL_SET | PCD_DATUM_TYPE_ALL_SET | PCD_DATUM_TYPE_UINT8_BOOLEAN))
56
57typedef struct {
58 UINT32 ExTokenNumber;
59 UINT16 TokenNumber; // Token Number for Dynamic-Ex PCD.
60 UINT16 ExGuidIndex; // Index of GuidTable in units of GUID.
61} DYNAMICEX_MAPPING;
62
63typedef struct {
64 UINT32 StringIndex; // Offset in String Table in units of UINT8.
65 UINT32 DefaultValueOffset; // Offset of the Default Value.
66 UINT16 GuidTableIndex; // Offset in Guid Table in units of GUID.
67 UINT16 Offset; // Offset in Variable.
68 UINT32 Attributes; // Variable attributes.
69 UINT16 Property; // Variable property.
70 UINT16 Reserved;
71} VARIABLE_HEAD;
72
73typedef struct {
74 UINT32 Offset;
75} VPD_HEAD;
76
77typedef UINT32 STRING_HEAD;
78
79typedef UINT16 SIZE_INFO;
80
81typedef struct {
82 UINT32 TokenSpaceCNameIndex; // Offset in String Table in units of UINT8.
83 UINT32 PcdCNameIndex; // Offset in String Table in units of UINT8.
84} PCD_NAME_INDEX;
85
86typedef UINT32 TABLE_OFFSET;
87
88typedef struct {
89 GUID Signature; // PcdDataBaseGuid.
90 UINT32 BuildVersion;
91 UINT32 Length; // Length of DEFAULT SKU PCD DB
92 SKU_ID SystemSkuId; // Current SkuId value.
93 UINT32 LengthForAllSkus; // Length of all SKU PCD DB
94 UINT32 UninitDataBaseSize; // Total size for PCD those default value with 0.
95 TABLE_OFFSET LocalTokenNumberTableOffset;
96 TABLE_OFFSET ExMapTableOffset;
97 TABLE_OFFSET GuidTableOffset;
98 TABLE_OFFSET StringTableOffset;
99 TABLE_OFFSET SizeTableOffset;
100 TABLE_OFFSET SkuIdTableOffset;
101 TABLE_OFFSET PcdNameTableOffset;
102 UINT16 LocalTokenCount; // LOCAL_TOKEN_NUMBER for all.
103 UINT16 ExTokenCount; // EX_TOKEN_NUMBER for DynamicEx.
104 UINT16 GuidTableCount; // The Number of Guid in GuidTable.
105 UINT8 Pad[6]; // Pad bytes to satisfy the alignment.
106
107 //
108 // Default initialized external PCD database binary structure
109 //
110 // Padding is needed to keep necessary alignment
111 //
112 //SKU_ID SkuIdTable[]; // SkuIds system supports.
113 //UINT64 ValueUint64[];
114 //UINT32 ValueUint32[];
115 //VPD_HEAD VpdHead[]; // VPD Offset
116 //DYNAMICEX_MAPPING ExMapTable[]; // DynamicEx PCD mapped to LocalIndex in LocalTokenNumberTable. It can be accessed by the ExMapTableOffset.
117 //UINT32 LocalTokenNumberTable[]; // Offset | DataType | PCD Type. It can be accessed by LocalTokenNumberTableOffset.
118 //GUID GuidTable[]; // GUID for DynamicEx and HII PCD variable Guid. It can be accessed by the GuidTableOffset.
119 //STRING_HEAD StringHead[]; // String PCD
120 //PCD_NAME_INDEX PcdNameTable[]; // PCD name index info. It can be accessed by the PcdNameTableOffset.
121 //VARIABLE_HEAD VariableHead[]; // HII PCD
122 //UINT8 StringTable[]; // String for String PCD value and HII PCD Variable Name. It can be accessed by StringTableOffset.
123 //SIZE_INFO SizeTable[]; // MaxSize and CurSize for String PCD. It can be accessed by SizeTableOffset.
124 //UINT16 ValueUint16[];
125 //UINT8 ValueUint8[];
126 //BOOLEAN ValueBoolean[];
127
128} PCD_DATABASE_INIT;
129
130//
131// PEI and DXE Pcd driver use the same PCD database
132//
133typedef PCD_DATABASE_INIT PEI_PCD_DATABASE;
134typedef PCD_DATABASE_INIT DXE_PCD_DATABASE;
135
136
137typedef struct {
138 PEI_PCD_DATABASE *PeiDb;
139 DXE_PCD_DATABASE *DxeDb;
140} PCD_DATABASE;
141
142typedef struct {
143 UINT32 Offset:24;
144 UINT32 Value:8;
145} PCD_DATA_DELTA;
146
147typedef struct {
148 SKU_ID SkuId;
149 UINT16 DefaultId;
150 UINT8 Reserved[6];
151} PCD_DEFAULT_INFO;
152
153typedef struct {
154 //
155 // Full size, it must be at 8 byte alignment.
156 //
157 UINT32 DataSize;
158 //
159 // HeaderSize includes HeaderSize fields and DefaultInfo arrays
160 //
161 UINT32 HeaderSize;
162 //
163 // DefaultInfo arrays those have the same default setting.
164 //
165 PCD_DEFAULT_INFO DefaultInfo[1];
166 //
167 // Default data is stored as variable storage or the array of DATA_DELTA.
168 //
169} PCD_DEFAULT_DATA;
170
171#define PCD_NV_STORE_DEFAULT_BUFFER_SIGNATURE SIGNATURE_32('N', 'S', 'D', 'B')
172
173typedef struct {
174 //
175 // PCD_NV_STORE_DEFAULT_BUFFER_SIGNATURE
176 //
177 UINT32 Signature;
178 //
179 // Length of the taken default buffer
180 //
181 UINT32 Length;
182 //
183 // Length of the total reserved buffer
184 //
185 UINT32 MaxLength;
186 //
187 // Reserved for 8 byte alignment
188 //
189 UINT32 Reserved;
190 // one or more PCD_DEFAULT_DATA
191} PCD_NV_STORE_DEFAULT_BUFFER_HEADER;
192
193//
194// NvStoreDefaultValueBuffer layout:
195// +-------------------------------------+
196// | PCD_NV_STORE_DEFAULT_BUFFER_HEADER |
197// +-------------------------------------+
198// | PCD_DEFAULT_DATA (DEFAULT, Standard)|
199// +-------------------------------------+
200// | PCD_DATA_DELTA (DEFAULT, Standard)|
201// +-------------------------------------+
202// | ...... |
203// +-------------------------------------+
204// | PCD_DEFAULT_DATA (SKU A, Standard) |
205// +-------------------------------------+
206// | PCD_DATA_DELTA (SKU A, Standard) |
207// +-------------------------------------+
208// | ...... |
209// +-------------------------------------+
210//
211
212#pragma pack(1)
213typedef struct {
214 SKU_ID SkuId;
215 SKU_ID SkuIdCompared;
216 UINT32 Length;
217 // PCD_DATA_DELTA DeltaData[]
218} PCD_DATABASE_SKU_DELTA;
219
220//
221// PCD database layout:
222// +---------------------------------+
223// | PCD_DATABASE_INIT (DEFAULT SKU) |
224// +---------------------------------+
225// | PCD_DATABASE_SKU_DELTA (SKU A) |
226// +---------------------------------+
227// | PCD_DATABASE_SKU_DELTA (SKU B) |
228// +---------------------------------+
229// | ...... |
230// +---------------------------------+
231//
232#pragma pack()
233
234#endif
注意: 瀏覽 TracBrowser 來幫助您使用儲存庫瀏覽器

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette