• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /** @file
2   Save Non-Volatile Variables to a file system.
3 
4   Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
5   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 #include "NvVarsFileLib.h"
16 #include <Library/DebugLib.h>
17 #include <Library/NvVarsFileLib.h>
18 
19 EFI_HANDLE    mNvVarsFileLibFsHandle = NULL;
20 
21 
22 /**
23   Attempts to connect the NvVarsFileLib to the specified file system.
24 
25   @param[in]  FsHandle - Handle for a gEfiSimpleFileSystemProtocolGuid instance
26 
27   @return     The EFI_STATUS while attempting to connect the NvVarsFileLib
28               to the file system instance.
29   @retval     EFI_SUCCESS - The given file system was connected successfully
30 
31 **/
32 EFI_STATUS
33 EFIAPI
ConnectNvVarsToFileSystem(IN EFI_HANDLE FsHandle)34 ConnectNvVarsToFileSystem (
35   IN EFI_HANDLE    FsHandle
36   )
37 {
38   EFI_STATUS Status;
39 
40   //
41   // We might fail to load the variable, since the file system initially
42   // will not have the NvVars file.
43   //
44   LoadNvVarsFromFs (FsHandle);
45 
46   //
47   // We must be able to save the variables successfully to the file system
48   // to have connected successfully.
49   //
50   Status = SaveNvVarsToFs (FsHandle);
51   if (!EFI_ERROR (Status)) {
52     mNvVarsFileLibFsHandle = FsHandle;
53   }
54 
55   return Status;
56 }
57 
58 
59 /**
60   Update non-volatile variables stored on the file system.
61 
62   @return     The EFI_STATUS while attempting to update the variable on
63               the connected file system.
64   @retval     EFI_SUCCESS - The non-volatile variables were saved to the disk
65   @retval     EFI_NOT_STARTED - A file system has not been connected
66 
67 **/
68 EFI_STATUS
69 EFIAPI
UpdateNvVarsOnFileSystem()70 UpdateNvVarsOnFileSystem (
71   )
72 {
73   if (mNvVarsFileLibFsHandle == NULL) {
74     //
75     // A file system had not been connected to the library.
76     //
77     return EFI_NOT_STARTED;
78   } else {
79     return SaveNvVarsToFs (mNvVarsFileLibFsHandle);
80   }
81 }
82 
83 
84