]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Include/VariableFormat.h
Update PCD help text.
[mirror_edk2.git] / MdeModulePkg / Include / VariableFormat.h
CommitLineData
5f597758 1/** @file\r
e5618791
LG
2 The variable data structures are related to EDK II specific UEFI variable implementation.\r
3 Variable data header and Variable storage region header are defined here.\r
3cfb790c 4\r
5f597758 5 Copyright (c) 2006 - 2008 Intel Corporation. <BR>\r
3cfb790c 6 All rights reserved. This program and the accompanying materials\r
7 are licensed and made available under the terms and conditions of the BSD License\r
8 which accompanies this distribution. The full text of the license may be found at\r
9 http://opensource.org/licenses/bsd-license.php\r
ebafc55b 10\r
3cfb790c 11 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
12 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
13\r
14**/\r
15\r
16#ifndef __VARIABLE_FORMAT_H__\r
17#define __VARIABLE_FORMAT_H__\r
18\r
ebafc55b 19///\r
e5618791
LG
20/// Alignment of variable name and data.\r
21/// For IA32/X64 architecture, the alignment is set to 1, and 8 is for IPF archtecture.\r
ebafc55b 22///\r
3cfb790c 23#if defined (MDE_CPU_IPF)\r
9cad030b 24#define ALIGNMENT 8\r
3cfb790c 25#else\r
9cad030b 26#define ALIGNMENT 1\r
3cfb790c 27#endif\r
28\r
e5618791 29//\r
b9982883 30// GET_PAD_SIZE to calculate miminal pad bytes to make current size satisfy the alignment requirement\r
e5618791
LG
31//\r
32#if ((ALIGNMENT == 0) || (ALIGNMENT == 1))\r
33#define GET_PAD_SIZE(a) (0)\r
34#else\r
35#define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1))\r
36#endif\r
37\r
38///\r
39/// Alignment of Variable Data Header in Variable Store region\r
40///\r
9cad030b 41#define HEADER_ALIGNMENT 4\r
e5618791 42#define HEADER_ALIGN(Header) (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1)))\r
9cad030b 43\r
ebafc55b 44///\r
e5618791 45/// Status of Variable Store Region\r
ebafc55b 46///\r
3cfb790c 47typedef enum {\r
48 EfiRaw,\r
49 EfiValid,\r
50 EfiInvalid,\r
51 EfiUnknown\r
52} VARIABLE_STORE_STATUS;\r
53\r
3cfb790c 54#pragma pack(1)\r
55\r
f3f2e05d 56#define VARIABLE_STORE_SIGNATURE SIGNATURE_32 ('$', 'V', 'S', 'S')\r
ebafc55b
LG
57\r
58///\r
59/// Variable Store Header Format and State\r
60///\r
61#define VARIABLE_STORE_FORMATTED 0x5a\r
62#define VARIABLE_STORE_HEALTHY 0xfe\r
63\r
64///\r
65/// Variable Store region header\r
66///\r
3cfb790c 67typedef struct {\r
ebafc55b
LG
68 ///\r
69 /// Variable store region signature.\r
70 ///\r
3cfb790c 71 UINT32 Signature;\r
ebafc55b
LG
72 ///\r
73 /// Size of variable store region including this header\r
74 ///\r
3cfb790c 75 UINT32 Size;\r
ebafc55b
LG
76 ///\r
77 /// variable region format state\r
78 ///\r
3cfb790c 79 UINT8 Format;\r
ebafc55b
LG
80 ///\r
81 /// variable region healthy state\r
82 ///\r
3cfb790c 83 UINT8 State;\r
84 UINT16 Reserved;\r
85 UINT32 Reserved1;\r
86} VARIABLE_STORE_HEADER;\r
87\r
ebafc55b
LG
88///\r
89/// Variable data start flag\r
90///\r
91#define VARIABLE_DATA 0x55AA\r
92\r
93///\r
94/// Variable State flags\r
95///\r
68dbca6c
LG
96#define VAR_IN_DELETED_TRANSITION 0xfe ///< Variable is in obsolete transistion\r
97#define VAR_DELETED 0xfd ///< Variable is obsolete\r
98#define VAR_HEADER_VALID_ONLY 0x7f ///< Variable header has been valid\r
99#define VAR_ADDED 0x3f ///< Variable has been completely added\r
ebafc55b 100\r
ebafc55b 101///\r
e5618791 102/// Single Variable Data Header Structure\r
ebafc55b 103///\r
3cfb790c 104typedef struct {\r
ebafc55b
LG
105 ///\r
106 /// Variable Data Start Flag\r
107 ///\r
3cfb790c 108 UINT16 StartId;\r
ebafc55b
LG
109 ///\r
110 /// Variable State defined above\r
111 ///\r
3cfb790c 112 UINT8 State;\r
113 UINT8 Reserved;\r
ebafc55b
LG
114 ///\r
115 /// Attributes of variable defined in UEFI spec\r
116 ///\r
3cfb790c 117 UINT32 Attributes;\r
ebafc55b
LG
118 ///\r
119 /// Size of variable Null-terminated Unicode string name\r
120 ///\r
3cfb790c 121 UINT32 NameSize;\r
ebafc55b
LG
122 ///\r
123 /// Size of the variable data without this header\r
124 ///\r
3cfb790c 125 UINT32 DataSize;\r
ebafc55b 126 ///\r
e5618791 127 /// A unique identifier for the vendor that produce and consume this varaible.\r
ebafc55b 128 ///\r
3cfb790c 129 EFI_GUID VendorGuid;\r
130} VARIABLE_HEADER;\r
131\r
132#pragma pack()\r
133\r
134#endif // _EFI_VARIABLE_H_\r