MdeModulePkg Variable: Implement variable quota management.
Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16669 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -42,6 +42,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
#include <Guid/SystemNvDataGuid.h>
|
||||
#include <Guid/FaultTolerantWrite.h>
|
||||
#include <Guid/HardwareErrorVariable.h>
|
||||
#include <Guid/VarErrorFlag.h>
|
||||
|
||||
#define VARIABLE_ATTRIBUTE_BS_RT (EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS)
|
||||
#define VARIABLE_ATTRIBUTE_NV_BS_RT (VARIABLE_ATTRIBUTE_BS_RT | EFI_VARIABLE_NON_VOLATILE)
|
||||
@@ -85,7 +86,11 @@ typedef struct {
|
||||
VARIABLE_GLOBAL VariableGlobal;
|
||||
UINTN VolatileLastVariableOffset;
|
||||
UINTN NonVolatileLastVariableOffset;
|
||||
UINTN CommonVariableSpace;
|
||||
UINTN CommonMaxUserVariableSpace;
|
||||
UINTN CommonRuntimeVariableSpace;
|
||||
UINTN CommonVariableTotalSize;
|
||||
UINTN CommonUserVariableTotalSize;
|
||||
UINTN HwErrVariableTotalSize;
|
||||
CHAR8 *PlatformLangCodes;
|
||||
CHAR8 *LangCodes;
|
||||
@@ -360,6 +365,41 @@ GetFvbInfoByAddress (
|
||||
OUT EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL **FvbProtocol OPTIONAL
|
||||
);
|
||||
|
||||
/**
|
||||
Finds variable in storage blocks of volatile and non-volatile storage areas.
|
||||
|
||||
This code finds variable in storage blocks of volatile and non-volatile storage areas.
|
||||
If VariableName is an empty string, then we just return the first
|
||||
qualified variable without comparing VariableName and VendorGuid.
|
||||
If IgnoreRtCheck is TRUE, then we ignore the EFI_VARIABLE_RUNTIME_ACCESS attribute check
|
||||
at runtime when searching existing variable, only VariableName and VendorGuid are compared.
|
||||
Otherwise, variables without EFI_VARIABLE_RUNTIME_ACCESS are not visible at runtime.
|
||||
|
||||
@param VariableName Name of the variable to be found.
|
||||
@param VendorGuid Vendor GUID to be found.
|
||||
@param PtrTrack VARIABLE_POINTER_TRACK structure for output,
|
||||
including the range searched and the target position.
|
||||
@param Global Pointer to VARIABLE_GLOBAL structure, including
|
||||
base of volatile variable storage area, base of
|
||||
NV variable storage area, and a lock.
|
||||
@param IgnoreRtCheck Ignore EFI_VARIABLE_RUNTIME_ACCESS attribute
|
||||
check at runtime when searching variable.
|
||||
|
||||
@retval EFI_INVALID_PARAMETER If VariableName is not an empty string, while
|
||||
VendorGuid is NULL.
|
||||
@retval EFI_SUCCESS Variable successfully found.
|
||||
@retval EFI_NOT_FOUND Variable not found
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
FindVariable (
|
||||
IN CHAR16 *VariableName,
|
||||
IN EFI_GUID *VendorGuid,
|
||||
OUT VARIABLE_POINTER_TRACK *PtrTrack,
|
||||
IN VARIABLE_GLOBAL *Global,
|
||||
IN BOOLEAN IgnoreRtCheck
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
This code finds variable in storage blocks (Volatile or Non-Volatile).
|
||||
@@ -615,6 +655,25 @@ VarCheckVariablePropertySet (
|
||||
IN VAR_CHECK_VARIABLE_PROPERTY *VariableProperty
|
||||
);
|
||||
|
||||
/**
|
||||
Internal variable property get.
|
||||
|
||||
@param[in] Name Pointer to the variable name.
|
||||
@param[in] Guid Pointer to the vendor GUID.
|
||||
@param[out] VariableProperty Pointer to the output variable property.
|
||||
|
||||
@retval EFI_SUCCESS The property of variable specified by the Name and Guid was got successfully.
|
||||
@retval EFI_NOT_FOUND The property of variable specified by the Name and Guid was not found.
|
||||
|
||||
**/
|
||||
EFI_STATUS
|
||||
EFIAPI
|
||||
InternalVarCheckVariablePropertyGet (
|
||||
IN CHAR16 *Name,
|
||||
IN EFI_GUID *Guid,
|
||||
OUT VAR_CHECK_VARIABLE_PROPERTY *VariableProperty
|
||||
);
|
||||
|
||||
/**
|
||||
Variable property get.
|
||||
|
||||
@@ -635,6 +694,15 @@ VarCheckVariablePropertyGet (
|
||||
OUT VAR_CHECK_VARIABLE_PROPERTY *VariableProperty
|
||||
);
|
||||
|
||||
/**
|
||||
Initialize variable quota.
|
||||
|
||||
**/
|
||||
VOID
|
||||
InitializeVariableQuota (
|
||||
VOID
|
||||
);
|
||||
|
||||
extern VARIABLE_MODULE_GLOBAL *mVariableModuleGlobal;
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user