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