]> git.proxmox.com Git - mirror_edk2.git/blame - MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h
Change EFI_OPTIONAL_POINTER to EFI_OPTIONAL_PTR
[mirror_edk2.git] / MdeModulePkg / Universal / Variable / RuntimeDxe / Variable.h
CommitLineData
504214c4 1/** @file\r
8d3a5c82 2\r
504214c4
LG
3 The internal header file includes the common header files, defines\r
4 internal structure and functions used by RuntimeVariable module.\r
5\r
6Copyright (c) 2006 - 2008, Intel Corporation\r
8d3a5c82 7All rights reserved. This program and the accompanying materials\r
8are licensed and made available under the terms and conditions of the BSD License\r
9which accompanies this distribution. The full text of the license may be found at\r
10http://opensource.org/licenses/bsd-license.php\r
11\r
12THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
13WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
14\r
504214c4 15**/\r
8d3a5c82 16\r
17#ifndef _VARIABLE_H\r
18#define _VARIABLE_H\r
19\r
39099938 20#include <PiDxe.h>\r
8d3a5c82 21#include <Protocol/VariableWrite.h>\r
22#include <Protocol/FaultTolerantWriteLite.h>\r
23#include <Protocol/FirmwareVolumeBlock.h>\r
24#include <Protocol/Variable.h>\r
25#include <Library/PcdLib.h>\r
26#include <Library/UefiDriverEntryPoint.h>\r
27#include <Library/DxeServicesTableLib.h>\r
28#include <Library/UefiRuntimeLib.h>\r
29#include <Library/DebugLib.h>\r
30#include <Library/BaseMemoryLib.h>\r
31#include <Library/FvbServiceLib.h>\r
32#include <Library/UefiBootServicesTableLib.h>\r
33#include <Library/UefiLib.h>\r
34#include <Library/BaseLib.h>\r
35#include <Library/MemoryAllocationLib.h>\r
052ad7e1
A
36#include <Guid/VariableInfo.h>\r
37#include <Guid/GlobalVariable.h>\r
3cfb790c 38#include <VariableFormat.h>\r
8d3a5c82 39\r
052ad7e1
A
40\r
41\r
8d3a5c82 42#define VARIABLE_RECLAIM_THRESHOLD (1024)\r
43\r
518d395c 44#define VARIABLE_STORE_SIZE FixedPcdGet32(PcdVariableStoreSize)\r
45#define SCRATCH_SIZE FixedPcdGet32(PcdMaxVariableSize)\r
8d3a5c82 46\r
47//\r
48// Define GET_PAD_SIZE to optimize compiler\r
49//\r
50#if ((ALIGNMENT == 0) || (ALIGNMENT == 1))\r
51#define GET_PAD_SIZE(a) (0)\r
52#else\r
53#define GET_PAD_SIZE(a) (((~a) + 1) & (ALIGNMENT - 1))\r
54#endif\r
55\r
9cad030b 56#define HEADER_ALIGN(Header) (((UINTN) (Header) + HEADER_ALIGNMENT - 1) & (~(HEADER_ALIGNMENT - 1)))\r
57\r
8d3a5c82 58\r
59typedef struct {\r
60 VARIABLE_HEADER *CurrPtr;\r
61 VARIABLE_HEADER *EndPtr;\r
62 VARIABLE_HEADER *StartPtr;\r
63 BOOLEAN Volatile;\r
64} VARIABLE_POINTER_TRACK;\r
65\r
66typedef struct {\r
67 EFI_PHYSICAL_ADDRESS VolatileVariableBase;\r
68 EFI_PHYSICAL_ADDRESS NonVolatileVariableBase;\r
69 EFI_LOCK VariableServicesLock;\r
fdb7765f 70 UINT32 ReentrantState;\r
8d3a5c82 71} VARIABLE_GLOBAL;\r
72\r
73typedef struct {\r
052ad7e1 74 VARIABLE_GLOBAL VariableGlobal;\r
8d3a5c82 75 UINTN VolatileLastVariableOffset;\r
76 UINTN NonVolatileLastVariableOffset;\r
77 UINT32 FvbInstance;\r
052ad7e1
A
78} VARIABLE_MODULE_GLOBAL;\r
79\r
80typedef struct {\r
81 EFI_GUID *Guid;\r
82 CHAR16 *Name;\r
83 UINT32 Attributes;\r
84 UINTN DataSize;\r
85 VOID *Data;\r
86} VARIABLE_CACHE_ENTRY;\r
8d3a5c82 87\r
8d3a5c82 88\r
89//\r
90// Functions\r
91//\r
8d3a5c82 92\r
93EFI_STATUS\r
94EFIAPI\r
95VariableServiceInitialize (\r
96 IN EFI_HANDLE ImageHandle,\r
97 IN EFI_SYSTEM_TABLE *SystemTable\r
98 );\r
99\r
8d3a5c82 100\r
101EFI_STATUS\r
102FtwVariableSpace (\r
103 IN EFI_PHYSICAL_ADDRESS VariableBaseAddress,\r
104 IN UINT8 *Buffer,\r
105 IN UINTN BufferSize\r
106 );\r
107\r
108#endif\r