Add a lock to protect the critical region in Service APIs for UEFI Runtime Variable Service to prevent re-entrance of the variable service API from from different allowable TPL level. In UEFI 2.x and EFI 1.10 spec, EFI_TPL_CALLBACK is the allowable TPL level for Variable services.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2444 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
qwang12
2007-03-12 07:56:16 +00:00
parent c094abe585
commit 6ed71dcc32
12 changed files with 275 additions and 125 deletions

View File

@@ -1,6 +1,6 @@
/*++
Copyright (c) 2006, Intel Corporation
Copyright (c) 2006 - 2007, Intel Corporation
All rights reserved. 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
@@ -51,7 +51,7 @@ Returns:
Attributes OPTIONAL,
DataSize,
Data,
&mVariableModuleGlobal->VariableBase[Physical],
&mVariableModuleGlobal->VariableGlobal[Physical],
mVariableModuleGlobal->FvbInstance
);
}
@@ -77,7 +77,7 @@ Returns:
VariableNameSize,
VariableName,
VendorGuid,
&mVariableModuleGlobal->VariableBase[Physical],
&mVariableModuleGlobal->VariableGlobal[Physical],
mVariableModuleGlobal->FvbInstance
);
}
@@ -107,7 +107,7 @@ Returns:
Attributes,
DataSize,
Data,
&mVariableModuleGlobal->VariableBase[Physical],
&mVariableModuleGlobal->VariableGlobal[Physical],
&mVariableModuleGlobal->VolatileLastVariableOffset,
&mVariableModuleGlobal->NonVolatileLastVariableOffset,
mVariableModuleGlobal->FvbInstance
@@ -138,7 +138,7 @@ Returns:
MaximumVariableStorageSize,
RemainingVariableStorageSize,
MaximumVariableSize,
&mVariableModuleGlobal->VariableBase[Physical],
&mVariableModuleGlobal->VariableGlobal[Physical],
mVariableModuleGlobal->FvbInstance
);
}
@@ -162,11 +162,11 @@ Returns:
{
EfiConvertPointer (
0x0,
(VOID **) &mVariableModuleGlobal->VariableBase[Physical].NonVolatileVariableBase
(VOID **) &mVariableModuleGlobal->VariableGlobal[Physical].NonVolatileVariableBase
);
EfiConvertPointer (
0x0,
(VOID **) &mVariableModuleGlobal->VariableBase[Physical].VolatileVariableBase
(VOID **) &mVariableModuleGlobal->VariableGlobal[Physical].VolatileVariableBase
);
EfiConvertPointer (0x0, (VOID **) &mVariableModuleGlobal);
}