1/** @file
2  The variable data structures are related to EDK II-specific implementation of UEFI variables.
3  VariableFormat.h defines variable data headers and variable storage region headers.
4
5Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>
6This program and the accompanying materials are licensed and made available under
7the terms and conditions of the BSD License that accompanies this distribution.
8The full text of the license may be found at
9http://opensource.org/licenses/bsd-license.php.
10
11THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13
14**/
15
16#ifndef __VARIABLE_INDEX_TABLE_H__
17#define __VARIABLE_INDEX_TABLE_H__
18
19typedef struct {
20  VARIABLE_HEADER *CurrPtr;
21  VARIABLE_HEADER *EndPtr;
22  VARIABLE_HEADER *StartPtr;
23} VARIABLE_POINTER_TRACK;
24
25#define VARIABLE_INDEX_TABLE_VOLUME 122
26
27#define EFI_VARIABLE_INDEX_TABLE_GUID \
28  { 0x8cfdb8c8, 0xd6b2, 0x40f3, { 0x8e, 0x97, 0x02, 0x30, 0x7c, 0xc9, 0x8b, 0x7c } }
29
30extern EFI_GUID gEfiVariableIndexTableGuid;
31
32///
33/// Use this data structure to store variable-related info, which can decrease
34/// the cost of access to NV.
35///
36typedef struct {
37  UINT16          Length;
38  UINT16          GoneThrough;
39  VARIABLE_HEADER *EndPtr;
40  VARIABLE_HEADER *StartPtr;
41  ///
42  /// This field is used to store the distance of two neighbouring VAR_ADDED type variables.
43  /// The meaning of the field is implement-dependent.
44  UINT16          Index[VARIABLE_INDEX_TABLE_VOLUME];
45} VARIABLE_INDEX_TABLE;
46
47#endif // __VARIABLE_INDEX_TABLE_H__
48