]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EdkModulePkg/Universal/EmuVariable/RuntimeDxe/EmuVariable.c
Remove some unused internal functions.
[mirror_edk2.git] / EdkModulePkg / Universal / EmuVariable / RuntimeDxe / EmuVariable.c
index 6614bb03e9b1ae4d64e816590f596bdc0b3db1d8..208f3b427682c4bac482867044f144398c064bf9 100644 (file)
@@ -1,16 +1,16 @@
 /*++\r
 \r
-Copyright (c) 2006, Intel Corporation                                                         \r
-All rights reserved. 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, Intel Corporation\r
+All rights reserved. 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
 \r
 Module Name:\r
-  \r
+\r
     EmuVariable.c\r
 \r
 Abstract:\r
@@ -26,6 +26,7 @@ Revision History
 //\r
 ESAL_VARIABLE_GLOBAL  *mVariableModuleGlobal;\r
 \r
+STATIC\r
 UINT32\r
 EFIAPI\r
 ArrayLength (\r
@@ -62,78 +63,7 @@ Returns:
   return (Count * 2) + 2;\r
 }\r
 \r
-UINTN\r
-EFIAPI\r
-GetPadSize (\r
-  IN UINTN Value\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  This function return the pad size for alignment\r
-\r
-Arguments:\r
-\r
-  Value  The value need to align\r
-\r
-Returns:\r
-\r
-  Pad size for value\r
-\r
---*/\r
-{\r
-  //\r
-  // If alignment is 0 or 1, means no alignment required\r
-  //\r
-  if (ALIGNMENT == 0 || ALIGNMENT == 1) {\r
-    return 0;\r
-  }\r
-\r
-  return ALIGNMENT - (Value % ALIGNMENT);\r
-}\r
-\r
-VARIABLE_STORE_STATUS\r
-EFIAPI\r
-GetVariableStoreStatus (\r
-  IN VARIABLE_STORE_HEADER *VarStoreHeader\r
-  )\r
-/*++\r
-\r
-Routine Description:\r
-\r
-  This code gets the pointer to the variable name.\r
-\r
-Arguments:\r
-\r
-  VarStoreHeader  Pointer to the Variable Store Header.\r
-\r
-Returns:\r
-\r
-  EfiHealthy    Variable store is healthy\r
-  EfiRaw        Variable store is raw\r
-  EfiInvalid    Variable store is invalid\r
-\r
---*/\r
-{\r
-  if (VarStoreHeader->Signature == VARIABLE_STORE_SIGNATURE &&\r
-      VarStoreHeader->Format == VARIABLE_STORE_FORMATTED &&\r
-      VarStoreHeader->State == VARIABLE_STORE_HEALTHY\r
-      ) {\r
-\r
-    return EfiValid;\r
-  } else if (VarStoreHeader->Signature == 0xffffffff &&\r
-           VarStoreHeader->Size == 0xffffffff &&\r
-           VarStoreHeader->Format == 0xff &&\r
-           VarStoreHeader->State == 0xff\r
-          ) {\r
-\r
-    return EfiRaw;\r
-  } else {\r
-    return EfiInvalid;\r
-  }\r
-}\r
-\r
+STATIC\r
 UINT8 *\r
 EFIAPI\r
 GetVariableDataPtr (\r
@@ -161,9 +91,10 @@ Returns:
   //\r
   // Be careful about pad size for alignment\r
   //\r
-  return (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (Variable) + Variable->NameSize + GetPadSize (Variable->NameSize));\r
+  return (UINT8 *) ((UINTN) GET_VARIABLE_NAME_PTR (Variable) + Variable->NameSize + GET_PAD_SIZE (Variable->NameSize));\r
 }\r
 \r
+STATIC\r
 VARIABLE_HEADER *\r
 EFIAPI\r
 GetNextVariablePtr (\r
@@ -204,6 +135,7 @@ Returns:
   return VarHeader;\r
 }\r
 \r
+STATIC\r
 VARIABLE_HEADER *\r
 EFIAPI\r
 GetEndPointer (\r
@@ -231,6 +163,7 @@ Returns:
   return (VARIABLE_HEADER *) ((UINTN) VolHeader + VolHeader->Size);\r
 }\r
 \r
+STATIC\r
 EFI_STATUS\r
 EFIAPI\r
 FindVariable (\r
@@ -367,8 +300,12 @@ Returns:
   //\r
   VarDataSize = Variable.CurrPtr->DataSize;\r
   if (*DataSize >= VarDataSize) {\r
+    if (Data == NULL) {\r
+      return EFI_INVALID_PARAMETER;\r
+    }\r
+\r
     CopyMem (Data, GetVariableDataPtr (Variable.CurrPtr), VarDataSize);\r
-    if (Attributes) {\r
+    if (Attributes != NULL) {\r
       *Attributes = Variable.CurrPtr->Attributes;\r
     }\r
 \r
@@ -413,7 +350,7 @@ Returns:
   UINTN                   VarNameSize;\r
   EFI_STATUS              Status;\r
 \r
-  if (VariableNameSize == NULL || VendorGuid == NULL) {\r
+  if (VariableNameSize == NULL || VariableName == NULL || VendorGuid == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -440,7 +377,7 @@ Returns:
         Variable.StartPtr = (VARIABLE_HEADER *) ((UINTN) (Global->VolatileVariableBase + sizeof (VARIABLE_STORE_HEADER)));\r
         Variable.EndPtr = (VARIABLE_HEADER *) GetEndPointer ((VARIABLE_STORE_HEADER *) ((UINTN) Global->VolatileVariableBase));\r
       } else {\r
-        return EFI_NOT_FOUND;\r
+        goto Error;\r
       }\r
 \r
       Variable.CurrPtr = Variable.StartPtr;\r
@@ -476,6 +413,7 @@ Returns:
     }\r
   }\r
 \r
+Error:\r
   return EFI_NOT_FOUND;\r
 }\r
 \r
@@ -533,38 +471,40 @@ Returns:
 \r
   if (Status == EFI_INVALID_PARAMETER) {\r
     return Status;\r
-  }\r
-  //\r
-  //  The size of the VariableName, including the Unicode Null in bytes plus\r
-  //  the DataSize is limited to maximum size of MAX_VARIABLE_SIZE (1024) bytes.\r
-  //\r
-  else if (sizeof (VARIABLE_HEADER) + (ArrayLength (VariableName) + DataSize) > MAX_VARIABLE_SIZE) {\r
+  } else if (!EFI_ERROR (Status) && Variable.Volatile && EfiAtRuntime()) {\r
+    //\r
+    // If EfiAtRuntime and the variable is Volatile and Runtime Access,  \r
+    // the volatile is ReadOnly, and SetVariable should be aborted and \r
+    // return EFI_WRITE_PROTECTED.\r
+    //\r
+    return EFI_WRITE_PROTECTED;\r
+  } else if (sizeof (VARIABLE_HEADER) + (ArrayLength (VariableName) + DataSize) > MAX_VARIABLE_SIZE) {\r
+    //\r
+    //  The size of the VariableName, including the Unicode Null in bytes plus\r
+    //  the DataSize is limited to maximum size of MAX_VARIABLE_SIZE (1024) bytes.\r
+    //\r
     return EFI_INVALID_PARAMETER;\r
-  }\r
-  //\r
-  //  Make sure if runtime bit is set, boot service bit is set also\r
-  //\r
-  else if ((Attributes & (EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_BOOTSERVICE_ACCESS)) == EFI_VARIABLE_RUNTIME_ACCESS\r
+  } else if ((Attributes & (EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_BOOTSERVICE_ACCESS)) == EFI_VARIABLE_RUNTIME_ACCESS\r
           ) {\r
+    //\r
+    //  Make sure if runtime bit is set, boot service bit is set also\r
+    //\r
     return EFI_INVALID_PARAMETER;\r
-  }\r
-  //\r
-  // Runtime but Attribute is not Runtime\r
-  //\r
-  else if (EfiAtRuntime () && Attributes && !(Attributes & EFI_VARIABLE_RUNTIME_ACCESS)) {\r
+  } else if (EfiAtRuntime () && Attributes && !(Attributes & EFI_VARIABLE_RUNTIME_ACCESS)) {\r
+    //\r
+    // Runtime but Attribute is not Runtime\r
+    //\r
     return EFI_INVALID_PARAMETER;\r
-  }\r
-  //\r
-  // Cannot set volatile variable in Runtime\r
-  //\r
-  else if (EfiAtRuntime () && Attributes && !(Attributes & EFI_VARIABLE_NON_VOLATILE)) {\r
+  } else if (EfiAtRuntime () && Attributes && !(Attributes & EFI_VARIABLE_NON_VOLATILE)) {\r
+    //\r
+    // Cannot set volatile variable in Runtime\r
+    //\r
     return EFI_INVALID_PARAMETER;\r
-  }\r
-  //\r
-  // Setting a data variable with no access, or zero DataSize attributes\r
-  // specified causes it to be deleted.\r
-  //\r
-  else if (DataSize == 0 || Attributes == 0) {\r
+  } else if (DataSize == 0 || (Attributes & (EFI_VARIABLE_RUNTIME_ACCESS | EFI_VARIABLE_BOOTSERVICE_ACCESS)) == 0) {\r
+    //\r
+    // Setting a data variable with no access, or zero DataSize attributes\r
+    // specified causes it to be deleted.\r
+    //\r
     if (!EFI_ERROR (Status)) {\r
       Variable.CurrPtr->State &= VAR_DELETED;\r
       return EFI_SUCCESS;\r
@@ -593,8 +533,8 @@ Returns:
     //\r
     VarNameOffset = sizeof (VARIABLE_HEADER);\r
     VarNameSize   = ArrayLength (VariableName);\r
-    VarDataOffset = VarNameOffset + VarNameSize + GetPadSize (VarNameSize);\r
-    VarSize       = VarDataOffset + DataSize + GetPadSize (DataSize);\r
+    VarDataOffset = VarNameOffset + VarNameSize + GET_PAD_SIZE (VarNameSize);\r
+    VarSize       = VarDataOffset + DataSize + GET_PAD_SIZE (DataSize);\r
 \r
     if (Attributes & EFI_VARIABLE_NON_VOLATILE) {\r
       if ((UINT32) (VarSize +*NonVolatileOffset) >\r
@@ -675,11 +615,11 @@ Routine Description:
 \r
 Arguments:\r
 \r
-  Attributes                      Attributes bitmask to specify the type of variables \r
+  Attributes                      Attributes bitmask to specify the type of variables\r
                                   on which to return information.\r
   MaximumVariableStorageSize      Pointer to the maximum size of the storage space available\r
                                   for the EFI variables associated with the attributes specified.\r
-  RemainingVariableStorageSize    Pointer to the remaining size of the storage space available \r
+  RemainingVariableStorageSize    Pointer to the remaining size of the storage space available\r
                                   for the EFI variables associated with the attributes specified.\r
   MaximumVariableSize             Pointer to the maximum size of the individual EFI variables\r
                                   associated with the attributes specified.\r
@@ -699,7 +639,7 @@ Returns:
   VARIABLE_HEADER        *NextVariable;\r
   UINT64                 VariableSize;\r
   VARIABLE_STORE_HEADER  *VariableStoreHeader;\r
-  \r
+\r
   if(MaximumVariableStorageSize == NULL || RemainingVariableStorageSize == NULL || MaximumVariableSize == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -719,13 +659,18 @@ Returns:
     //   Make sure RT Attribute is set if we are in Runtime phase.\r
     //\r
     return EFI_INVALID_PARAMETER;\r
+  } else if (EfiAtRuntime () && Attributes && !(Attributes & EFI_VARIABLE_NON_VOLATILE)) {\r
+    //\r
+    // Cannot Query volatile variable in Runtime\r
+    //\r
+    return EFI_INVALID_PARAMETER;\r
   }\r
 \r
   if((Attributes & EFI_VARIABLE_NON_VOLATILE) == 0) {\r
     //\r
     // Query is Volatile related.\r
     //\r
-    VariableStoreHeader = (VARIABLE_STORE_HEADER *) ((UINTN) Global->VolatileVariableBase);    \r
+    VariableStoreHeader = (VARIABLE_STORE_HEADER *) ((UINTN) Global->VolatileVariableBase);\r
   } else {\r
     //\r
     // Query is Non-Volatile related.\r
@@ -734,14 +679,14 @@ Returns:
   }\r
 \r
   //\r
-  // Now let's fill *MaximumVariableStorageSize *RemainingVariableStorageSize \r
+  // Now let's fill *MaximumVariableStorageSize *RemainingVariableStorageSize\r
   // with the storage size (excluding the storage header size)\r
   //\r
   *MaximumVariableStorageSize   = VariableStoreHeader->Size - sizeof (VARIABLE_STORE_HEADER);\r
   *RemainingVariableStorageSize = VariableStoreHeader->Size - sizeof (VARIABLE_STORE_HEADER);\r
 \r
   //\r
-  // Let *MaximumVariableSize be MAX_VARIABLE_SIZE \r
+  // Let *MaximumVariableSize be MAX_VARIABLE_SIZE\r
   //\r
   *MaximumVariableSize = MAX_VARIABLE_SIZE;\r
 \r
@@ -775,6 +720,7 @@ Returns:
 }\r
 #endif\r
 \r
+STATIC\r
 EFI_STATUS\r
 EFIAPI\r
 InitializeVariableStore (\r
@@ -846,7 +792,7 @@ Returns:
   //\r
   mVariableModuleGlobal = (ESAL_VARIABLE_GLOBAL *) AllocateRuntimePool (\r
                                                     sizeof (ESAL_VARIABLE_GLOBAL)\r
-                                                    );\r
+                                                   );\r
   if (NULL == mVariableModuleGlobal) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r