NvVarsFileLib.c revision 9607962def9f847c243b9fecb590c0cf94eec4fc
150944545795641de735586d4803f8fc38b43874ejljusten/** @file 250944545795641de735586d4803f8fc38b43874ejljusten Save Non-Volatile Variables to a file system. 350944545795641de735586d4803f8fc38b43874ejljusten 450944545795641de735586d4803f8fc38b43874ejljusten Copyright (c) 2009, Intel Corporation. <BR> 550944545795641de735586d4803f8fc38b43874ejljusten All rights reserved. This program and the accompanying materials 650944545795641de735586d4803f8fc38b43874ejljusten are licensed and made available under the terms and conditions of the BSD License 750944545795641de735586d4803f8fc38b43874ejljusten which accompanies this distribution. The full text of the license may be found at 850944545795641de735586d4803f8fc38b43874ejljusten http://opensource.org/licenses/bsd-license.php 950944545795641de735586d4803f8fc38b43874ejljusten 1050944545795641de735586d4803f8fc38b43874ejljusten THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 1150944545795641de735586d4803f8fc38b43874ejljusten WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 1250944545795641de735586d4803f8fc38b43874ejljusten 1350944545795641de735586d4803f8fc38b43874ejljusten**/ 1450944545795641de735586d4803f8fc38b43874ejljusten 1550944545795641de735586d4803f8fc38b43874ejljusten#include "NvVarsFileLib.h" 1650944545795641de735586d4803f8fc38b43874ejljusten#include <Library/DebugLib.h> 1750944545795641de735586d4803f8fc38b43874ejljusten#include <Library/NvVarsFileLib.h> 1850944545795641de735586d4803f8fc38b43874ejljusten 199607962def9f847c243b9fecb590c0cf94eec4fcjljustenEFI_HANDLE mNvVarsFileLibFsHandle = NULL; 209607962def9f847c243b9fecb590c0cf94eec4fcjljusten 2150944545795641de735586d4803f8fc38b43874ejljusten 2250944545795641de735586d4803f8fc38b43874ejljusten/** 2350944545795641de735586d4803f8fc38b43874ejljusten Attempts to connect the NvVarsFileLib to the specified file system. 2450944545795641de735586d4803f8fc38b43874ejljusten 2550944545795641de735586d4803f8fc38b43874ejljusten @param[in] FsHandle - Handle for a gEfiSimpleFileSystemProtocolGuid instance 2650944545795641de735586d4803f8fc38b43874ejljusten 2750944545795641de735586d4803f8fc38b43874ejljusten @return The EFI_STATUS while attempting to connect the NvVarsFileLib 2850944545795641de735586d4803f8fc38b43874ejljusten to the file system instance. 2950944545795641de735586d4803f8fc38b43874ejljusten @retval EFI_SUCCESS - The given file system was connected successfully 3050944545795641de735586d4803f8fc38b43874ejljusten 3150944545795641de735586d4803f8fc38b43874ejljusten**/ 3250944545795641de735586d4803f8fc38b43874ejljustenEFI_STATUS 3350944545795641de735586d4803f8fc38b43874ejljustenEFIAPI 3450944545795641de735586d4803f8fc38b43874ejljustenConnectNvVarsToFileSystem ( 3550944545795641de735586d4803f8fc38b43874ejljusten IN EFI_HANDLE FsHandle 3650944545795641de735586d4803f8fc38b43874ejljusten ) 3750944545795641de735586d4803f8fc38b43874ejljusten{ 3850944545795641de735586d4803f8fc38b43874ejljusten EFI_STATUS Status; 3950944545795641de735586d4803f8fc38b43874ejljusten 4050944545795641de735586d4803f8fc38b43874ejljusten // 4150944545795641de735586d4803f8fc38b43874ejljusten // We might fail to load the variable, since the file system initially 4250944545795641de735586d4803f8fc38b43874ejljusten // will not have the NvVars file. 4350944545795641de735586d4803f8fc38b43874ejljusten // 4450944545795641de735586d4803f8fc38b43874ejljusten LoadNvVarsFromFs (FsHandle); 4550944545795641de735586d4803f8fc38b43874ejljusten 4650944545795641de735586d4803f8fc38b43874ejljusten // 4750944545795641de735586d4803f8fc38b43874ejljusten // We must be able to save the variables successfully to the file system 4850944545795641de735586d4803f8fc38b43874ejljusten // to have connected successfully. 4950944545795641de735586d4803f8fc38b43874ejljusten // 5050944545795641de735586d4803f8fc38b43874ejljusten Status = SaveNvVarsToFs (FsHandle); 519607962def9f847c243b9fecb590c0cf94eec4fcjljusten if (!EFI_ERROR (Status)) { 529607962def9f847c243b9fecb590c0cf94eec4fcjljusten mNvVarsFileLibFsHandle = FsHandle; 539607962def9f847c243b9fecb590c0cf94eec4fcjljusten } 5450944545795641de735586d4803f8fc38b43874ejljusten 5550944545795641de735586d4803f8fc38b43874ejljusten return Status; 5650944545795641de735586d4803f8fc38b43874ejljusten} 5750944545795641de735586d4803f8fc38b43874ejljusten 5850944545795641de735586d4803f8fc38b43874ejljusten 599607962def9f847c243b9fecb590c0cf94eec4fcjljusten/** 609607962def9f847c243b9fecb590c0cf94eec4fcjljusten Update non-volatile variables stored on the file system. 619607962def9f847c243b9fecb590c0cf94eec4fcjljusten 629607962def9f847c243b9fecb590c0cf94eec4fcjljusten @return The EFI_STATUS while attempting to update the variable on 639607962def9f847c243b9fecb590c0cf94eec4fcjljusten the connected file system. 649607962def9f847c243b9fecb590c0cf94eec4fcjljusten @retval EFI_SUCCESS - The non-volatile variables were saved to the disk 659607962def9f847c243b9fecb590c0cf94eec4fcjljusten @retval EFI_NOT_STARTED - A file system has not been connected 669607962def9f847c243b9fecb590c0cf94eec4fcjljusten 679607962def9f847c243b9fecb590c0cf94eec4fcjljusten**/ 689607962def9f847c243b9fecb590c0cf94eec4fcjljustenEFI_STATUS 699607962def9f847c243b9fecb590c0cf94eec4fcjljustenEFIAPI 709607962def9f847c243b9fecb590c0cf94eec4fcjljustenUpdateNvVarsOnFileSystem ( 719607962def9f847c243b9fecb590c0cf94eec4fcjljusten ) 729607962def9f847c243b9fecb590c0cf94eec4fcjljusten{ 739607962def9f847c243b9fecb590c0cf94eec4fcjljusten if (mNvVarsFileLibFsHandle == NULL) { 749607962def9f847c243b9fecb590c0cf94eec4fcjljusten // 759607962def9f847c243b9fecb590c0cf94eec4fcjljusten // A file system had not been connected to the library. 769607962def9f847c243b9fecb590c0cf94eec4fcjljusten // 779607962def9f847c243b9fecb590c0cf94eec4fcjljusten return EFI_NOT_STARTED; 789607962def9f847c243b9fecb590c0cf94eec4fcjljusten } else { 799607962def9f847c243b9fecb590c0cf94eec4fcjljusten return SaveNvVarsToFs (mNvVarsFileLibFsHandle); 809607962def9f847c243b9fecb590c0cf94eec4fcjljusten } 819607962def9f847c243b9fecb590c0cf94eec4fcjljusten} 829607962def9f847c243b9fecb590c0cf94eec4fcjljusten 839607962def9f847c243b9fecb590c0cf94eec4fcjljusten 84