Implement all four UEFI Runtime Variable services for the nonvolatile\r
and volatile storage space and install variable architecture protocol.\r
\r
+Copyright (C) 2013, Red Hat, Inc.\r
Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials \r
are licensed and made available under the terms and conditions of the BSD License \r
EFI_HANDLE mHandle = NULL;\r
EFI_EVENT mVirtualAddressChangeEvent = NULL;\r
EFI_EVENT mFtwRegistration = NULL;\r
+extern LIST_ENTRY mLockedVariableList;\r
extern BOOLEAN mEndOfDxe;\r
EDKII_VARIABLE_LOCK_PROTOCOL mVariableLock = { VariableLockRequestToLock };\r
\r
IN VOID *Context\r
)\r
{\r
+ LIST_ENTRY *Link;\r
+ VARIABLE_ENTRY *Entry;\r
+ EFI_STATUS Status;\r
+\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetBlockSize);\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetPhysicalAddress);\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetAttributes);\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->VariableGlobal.HobVariableBase);\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal);\r
EfiConvertPointer (0x0, (VOID **) &mNvVariableCache); \r
+\r
+ //\r
+ // in the list of locked variables, convert the name pointers first\r
+ //\r
+ for ( Link = GetFirstNode (&mLockedVariableList)\r
+ ; !IsNull (&mLockedVariableList, Link)\r
+ ; Link = GetNextNode (&mLockedVariableList, Link)\r
+ ) {\r
+ Entry = BASE_CR (Link, VARIABLE_ENTRY, Link);\r
+ Status = EfiConvertPointer (0x0, (VOID **) &Entry->Name);\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
+ //\r
+ // second, convert the list itself using UefiRuntimeLib\r
+ //\r
+ Status = EfiConvertList (0x0, &mLockedVariableList);\r
+ ASSERT_EFI_ERROR (Status);\r
}\r
\r
\r
Implement all four UEFI Runtime Variable services for the nonvolatile\r
and volatile storage space and install variable architecture protocol.\r
\r
+Copyright (C) 2013, Red Hat, Inc.\r
Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>\r
This program and the accompanying materials\r
are licensed and made available under the terms and conditions of the BSD License\r
EFI_HANDLE mHandle = NULL;\r
EFI_EVENT mVirtualAddressChangeEvent = NULL;\r
EFI_EVENT mFtwRegistration = NULL;\r
+extern LIST_ENTRY mLockedVariableList;\r
extern BOOLEAN mEndOfDxe;\r
EDKII_VARIABLE_LOCK_PROTOCOL mVariableLock = { VariableLockRequestToLock };\r
\r
IN VOID *Context\r
)\r
{\r
+ LIST_ENTRY *Link;\r
+ VARIABLE_ENTRY *Entry;\r
+ EFI_STATUS Status;\r
+\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetBlockSize);\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetPhysicalAddress);\r
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal->FvbInstance->GetAttributes);\r
EfiConvertPointer (0x0, (VOID **) &mStorageArea);\r
EfiConvertPointer (0x0, (VOID **) &mSerializationRuntimeBuffer);\r
EfiConvertPointer (0x0, (VOID **) &mNvVariableCache);\r
+\r
+ //\r
+ // in the list of locked variables, convert the name pointers first\r
+ //\r
+ for ( Link = GetFirstNode (&mLockedVariableList)\r
+ ; !IsNull (&mLockedVariableList, Link)\r
+ ; Link = GetNextNode (&mLockedVariableList, Link)\r
+ ) {\r
+ Entry = BASE_CR (Link, VARIABLE_ENTRY, Link);\r
+ Status = EfiConvertPointer (0x0, (VOID **) &Entry->Name);\r
+ ASSERT_EFI_ERROR (Status);\r
+ }\r
+ //\r
+ // second, convert the list itself using UefiRuntimeLib\r
+ //\r
+ Status = EfiConvertList (0x0, &mLockedVariableList);\r
+ ASSERT_EFI_ERROR (Status);\r
}\r
\r
\r