mirror of https://github.com/acidanthera/audk.git
84 lines
2.2 KiB
C
84 lines
2.2 KiB
C
/** @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.
|
|
|
|
**/
|
|
|
|
#include "NvVarsFileLib.h"
|
|
#include <Library/DebugLib.h>
|
|
#include <Library/NvVarsFileLib.h>
|
|
|
|
EFI_HANDLE mNvVarsFileLibFsHandle = NULL;
|
|
|
|
|
|
/**
|
|
Attempts to connect the NvVarsFileLib to the specified file system.
|
|
|
|
@param[in] FsHandle - Handle for a gEfiSimpleFileSystemProtocolGuid instance
|
|
|
|
@return The EFI_STATUS while attempting to connect the NvVarsFileLib
|
|
to the file system instance.
|
|
@retval EFI_SUCCESS - The given file system was connected successfully
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
ConnectNvVarsToFileSystem (
|
|
IN EFI_HANDLE FsHandle
|
|
)
|
|
{
|
|
EFI_STATUS Status;
|
|
|
|
//
|
|
// We might fail to load the variable, since the file system initially
|
|
// will not have the NvVars file.
|
|
//
|
|
LoadNvVarsFromFs (FsHandle);
|
|
|
|
//
|
|
// We must be able to save the variables successfully to the file system
|
|
// to have connected successfully.
|
|
//
|
|
Status = SaveNvVarsToFs (FsHandle);
|
|
if (!EFI_ERROR (Status)) {
|
|
mNvVarsFileLibFsHandle = FsHandle;
|
|
}
|
|
|
|
return Status;
|
|
}
|
|
|
|
|
|
/**
|
|
Update non-volatile variables stored on the file system.
|
|
|
|
@return The EFI_STATUS while attempting to update the variable on
|
|
the connected file system.
|
|
@retval EFI_SUCCESS - The non-volatile variables were saved to the disk
|
|
@retval EFI_NOT_STARTED - A file system has not been connected
|
|
|
|
**/
|
|
EFI_STATUS
|
|
EFIAPI
|
|
UpdateNvVarsOnFileSystem (
|
|
)
|
|
{
|
|
if (mNvVarsFileLibFsHandle == NULL) {
|
|
//
|
|
// A file system had not been connected to the library.
|
|
//
|
|
return EFI_NOT_STARTED;
|
|
} else {
|
|
return SaveNvVarsToFs (mNvVarsFileLibFsHandle);
|
|
}
|
|
}
|
|
|
|
|