summaryrefslogtreecommitdiffstats
path: root/OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.h
blob: b34d4fb6fb314e172e55c868b2121593c1b56bb3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/** @file
  Save Non-Volatile Variables to a file system.

  Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
  This program and the accompanying materials
  are licensed and made available under the terms and conditions of the BSD License
  which accompanies this distribution.  The full text of the license may be found at
  http://opensource.org/licenses/bsd-license.php

  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.

**/

#ifndef __NV_VARS_FILE_LIB_INSTANCE__
#define __NV_VARS_FILE_LIB_INSTANCE__

#include <Uefi.h>

#include <Guid/FileInfo.h>

#include <Protocol/SimpleFileSystem.h>

#include <Library/BaseLib.h>
#include <Library/FileHandleLib.h>
#include <Library/UefiBootServicesTableLib.h>
#include <Library/UefiRuntimeServicesTableLib.h>
#include <Library/UefiLib.h>

/**
  Loads the non-volatile variables from the NvVars file on the
  given file system.

  @param[in]  FsHandle - Handle for a gEfiSimpleFileSystemProtocolGuid instance

  @return     EFI_STATUS based on the success or failure of load operation

**/
EFI_STATUS
LoadNvVarsFromFs (
  EFI_HANDLE                            FsHandle
  );


/**
  Saves the non-volatile variables into the NvVars file on the
  given file system.

  @param[in]  FsHandle - Handle for a gEfiSimpleFileSystemProtocolGuid instance

  @return     EFI_STATUS based on the success or failure of load operation

**/
EFI_STATUS
SaveNvVarsToFs (
  EFI_HANDLE                            FsHandle
  );


/**
  Examines the NvVars file contents, and updates variables based on it.

  @param[in]  VarsBuffer - Buffer with NvVars data
  @param[in]  VarsBufferSize - Size of VarsBuffer in bytes

  @return     EFI_STATUS based on the success or failure of the operation

**/
EFI_STATUS
SetVariablesFromBuffer (
  IN VOID   *VarsBuffer,
  IN UINTN  VarsBufferSize
  );


/**
  Writes the variable into the file so it can be restored from
  the file on future boots of the system.

  @param[in]  File - The file to write to
  @param[in]  Name - Variable name string
  @param[in]  NameSize - Size of Name in bytes
  @param[in]  Guid - GUID of variable
  @param[in]  Attributes - Attributes of variable
  @param[in]  Data - Buffer containing Data for variable
  @param[in]  DataSize - Size of Data in bytes

  @return     EFI_STATUS based on the success or failure of the operation

**/
EFI_STATUS
PackVariableIntoFile (
  IN EFI_FILE_HANDLE  File,
  IN CHAR16           *Name,
  IN UINT32           NameSize,
  IN EFI_GUID         *Guid,
  IN UINT32           Attributes,
  IN VOID             *Data,
  IN UINT32           DataSize
  );

#endif