]> git.proxmox.com Git - mirror_edk2.git/blobdiff - OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.h
Implement NvVarsFileLib to save and restore non-volatile variables using a file.
[mirror_edk2.git] / OvmfPkg / Library / NvVarsFileLib / NvVarsFileLib.h
diff --git a/OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.h b/OvmfPkg/Library/NvVarsFileLib/NvVarsFileLib.h
new file mode 100644 (file)
index 0000000..6241dc8
--- /dev/null
@@ -0,0 +1,103 @@
+/** @file
+  Save Non-Volatile Variables to a file system.
+
+  Copyright (c) 2009, Intel Corporation
+  All rights reserved. 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
+