08334b72236741df222d0c0e92d9905aebda481f
[mirror_edk2.git] / EdkModulePkg / Include / Common / Variable.h
1 /**@file
2 Header file for EFI Variable Services.
3
4 Copyright (c) 2006 - 2007 Intel Corporation. <BR>
5 All rights reserved. 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 _EFI_VARIABLE_H_
16 #define _EFI_VARIABLE_H_
17
18 #define VARIABLE_STORE_SIGNATURE EFI_SIGNATURE_32 ('$', 'V', 'S', 'S')
19
20 #define MAX_VARIABLE_SIZE 1024
21
22 #define VARIABLE_DATA 0x55AA
23
24 //
25 // Variable Store Header flags
26 //
27 #define VARIABLE_STORE_FORMATTED 0x5a
28 #define VARIABLE_STORE_HEALTHY 0xfe
29
30 //
31 // The alignment of variable's start offset.
32 //
33 #if defined (MDE_CPU_IPF)
34 #define ALIGNMENT 8
35 #else
36 #define ALIGNMENT 2
37 #endif
38
39 //
40 // Variable Store Status
41 //
42 typedef enum {
43 EfiRaw,
44 EfiValid,
45 EfiInvalid,
46 EfiUnknown
47 } VARIABLE_STORE_STATUS;
48
49 //
50 // Variable State flags
51 //
52 #define VAR_IN_DELETED_TRANSITION 0xfe // Variable is in obsolete transistion
53 #define VAR_DELETED 0xfd // Variable is obsolete
54 #define VAR_ADDED 0x7f // Variable has been completely added
55 #define IS_VARIABLE_STATE(_c, _Mask) (BOOLEAN) (((~_c) & (~_Mask)) != 0)
56
57 #pragma pack(1)
58
59 typedef struct {
60 UINT32 Signature;
61 UINT32 Size;
62 UINT8 Format;
63 UINT8 State;
64 UINT16 Reserved;
65 UINT32 Reserved1;
66 } VARIABLE_STORE_HEADER;
67
68 typedef struct {
69 UINT16 StartId;
70 UINT8 State;
71 UINT8 Reserved;
72 UINT32 Attributes;
73 UINT32 NameSize;
74 UINT32 DataSize;
75 EFI_GUID VendorGuid;
76 } VARIABLE_HEADER;
77
78 #pragma pack()
79
80 #endif // _EFI_VARIABLE_H_