Home | History | Annotate | Download | only in NvVarsFileLib
      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
     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
     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