The internal header file includes the common header files, defines\r
internal structure and functions used by Variable modules.\r
\r
-Copyright (c) 2006 - 2015, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2019, 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
which accompanies this distribution. The full text of the license may be found at\r
#include <Guid/FaultTolerantWrite.h>\r
#include <Guid/VarErrorFlag.h>\r
\r
+#include "PrivilegePolymorphic.h"\r
+\r
+#define NV_STORAGE_VARIABLE_BASE (EFI_PHYSICAL_ADDRESS) \\r
+ (PcdGet64 (PcdFlashNvStorageVariableBase64) != 0 ? \\r
+ PcdGet64 (PcdFlashNvStorageVariableBase64) : \\r
+ PcdGet32 (PcdFlashNvStorageVariableBase))\r
+\r
#define EFI_VARIABLE_ATTRIBUTES_MASK (EFI_VARIABLE_NON_VOLATILE | \\r
EFI_VARIABLE_BOOTSERVICE_ACCESS | \\r
EFI_VARIABLE_RUNTIME_ACCESS | \\r
EFI_VARIABLE_HARDWARE_ERROR_RECORD | \\r
- EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS | \\r
EFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS | \\r
EFI_VARIABLE_APPEND_WRITE)\r
\r
UINT32 ReentrantState;\r
BOOLEAN AuthFormat;\r
BOOLEAN AuthSupport;\r
+ BOOLEAN EmuNvMode;\r
} VARIABLE_GLOBAL;\r
\r
typedef struct {\r
UINTN HwErrVariableTotalSize;\r
UINTN MaxVariableSize;\r
UINTN MaxAuthVariableSize;\r
+ UINTN MaxVolatileVariableSize;\r
UINTN ScratchBufferSize;\r
CHAR8 *PlatformLangCodes;\r
CHAR8 *LangCodes;\r
);\r
\r
/**\r
- Retrive the FVB protocol interface by HANDLE.\r
+ Retrieve the FVB protocol interface by HANDLE.\r
\r
@param[in] FvBlockHandle The handle of FVB protocol that provides services for\r
reading, writing, and erasing the target block.\r
);\r
\r
/**\r
- Initializes variable write service after FVB was ready.\r
+ Get maximum variable size, covering both non-volatile and volatile variables.\r
+\r
+ @return Maximum variable size.\r
+\r
+**/\r
+UINTN\r
+GetMaxVariableSize (\r
+ VOID\r
+ );\r
+\r
+/**\r
+ Initializes variable write service.\r
\r
@retval EFI_SUCCESS Function successfully executed.\r
@retval Others Fail to initialize the variable service.\r
);\r
\r
/**\r
- Retrive the SMM Fault Tolerent Write protocol interface.\r
+ Retrieve the SMM Fault Tolerent Write protocol interface.\r
\r
@param[out] FtwProtocol The interface of SMM Ftw protocol\r
\r
@param Attributes Attribute value of the variable found.\r
@param DataSize Size of Data found. If size is less than the\r
data, this value contains the required size.\r
- @param Data Data pointer.\r
+ @param Data The buffer to return the contents of the variable. May be NULL\r
+ with a zero DataSize in order to determine the size buffer needed.\r
\r
@return EFI_INVALID_PARAMETER Invalid parameter.\r
@return EFI_SUCCESS Find the specified variable.\r
IN EFI_GUID *VendorGuid,\r
OUT UINT32 *Attributes OPTIONAL,\r
IN OUT UINTN *DataSize,\r
- OUT VOID *Data\r
+ OUT VOID *Data OPTIONAL\r
);\r
\r
/**\r
@param[in] VendorGuid Variable Vendor Guid.\r
@param[out] VariablePtr Pointer to variable header address.\r
\r
- @return EFI_SUCCESS Find the specified variable.\r
- @return EFI_NOT_FOUND Not found.\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+ @retval EFI_NOT_FOUND The next variable was not found.\r
+ @retval EFI_INVALID_PARAMETER If VariableName is not an empty string, while VendorGuid is NULL.\r
+ @retval EFI_INVALID_PARAMETER The input values of VariableName and VendorGuid are not a name and\r
+ GUID of an existing variable.\r
\r
**/\r
EFI_STATUS\r
Caution: This function may receive untrusted input.\r
This function may be invoked in SMM mode. This function will do basic validation, before parse the data.\r
\r
- @param VariableNameSize Size of the variable name.\r
+ @param VariableNameSize The size of the VariableName buffer. The size must be large\r
+ enough to fit input string supplied in VariableName buffer.\r
@param VariableName Pointer to variable name.\r
@param VendorGuid Variable Vendor Guid.\r
\r
- @return EFI_INVALID_PARAMETER Invalid parameter.\r
- @return EFI_SUCCESS Find the specified variable.\r
- @return EFI_NOT_FOUND Not found.\r
- @return EFI_BUFFER_TO_SMALL DataSize is too small for the result.\r
+ @retval EFI_SUCCESS The function completed successfully.\r
+ @retval EFI_NOT_FOUND The next variable was not found.\r
+ @retval EFI_BUFFER_TOO_SMALL The VariableNameSize is too small for the result.\r
+ VariableNameSize has been updated with the size needed to complete the request.\r
+ @retval EFI_INVALID_PARAMETER VariableNameSize is NULL.\r
+ @retval EFI_INVALID_PARAMETER VariableName is NULL.\r
+ @retval EFI_INVALID_PARAMETER VendorGuid is NULL.\r
+ @retval EFI_INVALID_PARAMETER The input values of VariableName and VendorGuid are not a name and\r
+ GUID of an existing variable.\r
+ @retval EFI_INVALID_PARAMETER Null-terminator is not found in the first VariableNameSize bytes of\r
+ the input VariableName buffer.\r
\r
**/\r
EFI_STATUS\r
VOID\r
);\r
\r
-extern VARIABLE_MODULE_GLOBAL *mVariableModuleGlobal;\r
+extern VARIABLE_MODULE_GLOBAL *mVariableModuleGlobal;\r
+extern EFI_FIRMWARE_VOLUME_HEADER *mNvFvHeaderCache;\r
+extern VARIABLE_STORE_HEADER *mNvVariableCache;\r
+extern VARIABLE_INFO_ENTRY *gVariableInfo;\r
+extern BOOLEAN mEndOfDxe;\r
+extern VAR_CHECK_REQUEST_SOURCE mRequestSource;\r
\r
-extern AUTH_VAR_LIB_CONTEXT_OUT mAuthContextOut;\r
+extern AUTH_VAR_LIB_CONTEXT_OUT mAuthContextOut;\r
\r
/**\r
Finds variable in storage blocks of volatile and non-volatile storage areas.\r