]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/Variable/RuntimeDxe/Variable.h
MdeModulePkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / MdeModulePkg / Universal / Variable / RuntimeDxe / Variable.h
index cd0d9568158a1d59594eba7f484db5b08d2036e9..9eac43759fd1b5a7d3cba9e762a1066737c796fb 100644 (file)
@@ -2,14 +2,8 @@
   The internal header file includes the common header files, defines\r
   internal structure and functions used by Variable modules.\r
 \r
-Copyright (c) 2006 - 2017, 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
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
+SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
@@ -44,11 +38,17 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 #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
@@ -86,6 +86,7 @@ typedef struct {
   UINT32                ReentrantState;\r
   BOOLEAN               AuthFormat;\r
   BOOLEAN               AuthSupport;\r
+  BOOLEAN               EmuNvMode;\r
 } VARIABLE_GLOBAL;\r
 \r
 typedef struct {\r
@@ -100,6 +101,7 @@ typedef struct {
   UINTN           HwErrVariableTotalSize;\r
   UINTN           MaxVariableSize;\r
   UINTN           MaxAuthVariableSize;\r
+  UINTN           MaxVolatileVariableSize;\r
   UINTN           ScratchBufferSize;\r
   CHAR8           *PlatformLangCodes;\r
   CHAR8           *LangCodes;\r
@@ -460,7 +462,18 @@ GetNonVolatileMaxVariableSize (
   );\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
@@ -543,8 +556,11 @@ VariableServiceGetVariable (
   @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
@@ -562,14 +578,22 @@ VariableServiceGetNextVariableInternal (
   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
@@ -768,9 +792,14 @@ InitializeVariableQuota (
   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