]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Library/DxeCapsuleLibFmp/DxeCapsuleReportLib.c
MdeModulePkg: Replace [Ascii|Unicode]ValueToString
[mirror_edk2.git] / MdeModulePkg / Library / DxeCapsuleLibFmp / DxeCapsuleReportLib.c
index ce79a5a619a17fda59f05aaa4b41bdf126b29a0b..fc0f8698a9b42b5878a188ad87346792a569dd57 100644 (file)
@@ -1,7 +1,7 @@
 /** @file\r
   DXE capsule report related function.\r
 \r
-  Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>\r
+  Copyright (c) 2016 - 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
 \r
 #include <IndustryStandard/WindowsUxCapsule.h>\r
 \r
-typedef struct {\r
-  EFI_CAPSULE_RESULT_VARIABLE_HEADER  CapsuleResultHeader;\r
-  EFI_CAPSULE_RESULT_VARIABLE_FMP     CapsuleResultFmp;\r
-} CAPSULE_RESULT_VARIABLE_CACHE;\r
-\r
-#define CAPSULE_RESULT_VARIABLE_CACHE_COUNT   0x10\r
-\r
-CAPSULE_RESULT_VARIABLE_CACHE *mCapsuleResultVariableCache;\r
-UINTN                         mCapsuleResultVariableCacheMaxCount;\r
-UINTN                         mCapsuleResultVariableCacheCount;\r
-\r
 /**\r
   Get current capsule last variable index.\r
 \r
@@ -77,92 +66,6 @@ GetCurrentCapsuleLastIndex (
   return CurrentIndex;\r
 }\r
 \r
-/**\r
-  Check if this FMP capsule is processed.\r
-\r
-  @param[in] CapsuleHeader  The capsule image header\r
-  @param[in] PayloadIndex   FMP payload index\r
-  @param[in] ImageHeader    FMP image header\r
-\r
-  @retval TRUE  This FMP capsule is processed.\r
-  @retval FALSE This FMP capsule is not processed.\r
-**/\r
-BOOLEAN\r
-IsFmpCapsuleProcessed (\r
-  IN EFI_CAPSULE_HEADER                            *CapsuleHeader,\r
-  IN UINTN                                         PayloadIndex,\r
-  IN EFI_FIRMWARE_MANAGEMENT_CAPSULE_IMAGE_HEADER  *ImageHeader\r
-  )\r
-{\r
-  UINTN                               Index;\r
-  EFI_CAPSULE_RESULT_VARIABLE_HEADER  *CapsuleResult;\r
-  EFI_CAPSULE_RESULT_VARIABLE_FMP     *CapsuleResultFmp;\r
-\r
-  for (Index = 0; Index < mCapsuleResultVariableCacheCount; Index++) {\r
-    //\r
-    // Check\r
-    //\r
-    CapsuleResult = &mCapsuleResultVariableCache[Index].CapsuleResultHeader;\r
-    if (CapsuleResult->VariableTotalSize >= sizeof(EFI_CAPSULE_RESULT_VARIABLE_HEADER)) {\r
-      if (CompareGuid(&CapsuleResult->CapsuleGuid, &gEfiFmpCapsuleGuid)) {\r
-        if (CapsuleResult->VariableTotalSize >= sizeof(EFI_CAPSULE_RESULT_VARIABLE_HEADER) + sizeof(EFI_CAPSULE_RESULT_VARIABLE_FMP) + sizeof(CHAR16) * 2) {\r
-          CapsuleResultFmp = (EFI_CAPSULE_RESULT_VARIABLE_FMP *)(CapsuleResult + 1);\r
-          if (CompareGuid(&CapsuleResultFmp->UpdateImageTypeId, &ImageHeader->UpdateImageTypeId) &&\r
-              (CapsuleResultFmp->UpdateImageIndex == ImageHeader->UpdateImageIndex) &&\r
-              (CapsuleResultFmp->PayloadIndex == PayloadIndex) ) {\r
-            return TRUE;\r
-          }\r
-        }\r
-      }\r
-    }\r
-  }\r
-\r
-  return FALSE;\r
-}\r
-\r
-/**\r
-  Write a new capsule status variable cache.\r
-\r
-  @param[in] CapsuleResult      The capsule status variable\r
-  @param[in] CapsuleResultSize  The size of the capsule stauts variable in bytes\r
-\r
-  @retval EFI_SUCCESS          The capsule status variable is cached.\r
-  @retval EFI_OUT_OF_RESOURCES No resource to cache the capsule status variable.\r
-**/\r
-EFI_STATUS\r
-WriteNewCapsuleResultVariableCache (\r
-  IN VOID    *CapsuleResult,\r
-  IN UINTN   CapsuleResultSize\r
-  )\r
-{\r
-  if (CapsuleResultSize > sizeof(CAPSULE_RESULT_VARIABLE_CACHE)) {\r
-    CapsuleResultSize = sizeof(CAPSULE_RESULT_VARIABLE_CACHE);\r
-  }\r
-\r
-  if (mCapsuleResultVariableCacheCount == mCapsuleResultVariableCacheMaxCount) {\r
-    mCapsuleResultVariableCache = ReallocatePool(\r
-                                    mCapsuleResultVariableCacheMaxCount * sizeof(CAPSULE_RESULT_VARIABLE_CACHE),\r
-                                    (mCapsuleResultVariableCacheMaxCount + CAPSULE_RESULT_VARIABLE_CACHE_COUNT) * sizeof(CAPSULE_RESULT_VARIABLE_CACHE),\r
-                                    mCapsuleResultVariableCache\r
-                                    );\r
-    if (mCapsuleResultVariableCache == NULL) {\r
-      return EFI_OUT_OF_RESOURCES;\r
-    }\r
-    mCapsuleResultVariableCacheMaxCount += CAPSULE_RESULT_VARIABLE_CACHE_COUNT;\r
-  }\r
-\r
-  ASSERT(mCapsuleResultVariableCacheCount < mCapsuleResultVariableCacheMaxCount);\r
-  ASSERT(mCapsuleResultVariableCache != NULL);\r
-  CopyMem(\r
-    &mCapsuleResultVariableCache[mCapsuleResultVariableCacheCount],\r
-    CapsuleResult,\r
-    CapsuleResultSize\r
-    );\r
-  mCapsuleResultVariableCacheCount++;\r
-\r
-  return EFI_SUCCESS;\r
-}\r
-\r
 /**\r
   Get a new capsule status variable index.\r
 \r
@@ -262,11 +165,7 @@ RecordCapsuleStatusVariable (
   gRT->GetTime(&CapsuleResultVariable.CapsuleProcessed, NULL);\r
   CapsuleResultVariable.CapsuleStatus = CapsuleStatus;\r
 \r
-  //\r
-  // Save Local Cache\r
-  //\r
-  Status = WriteNewCapsuleResultVariableCache(&CapsuleResultVariable, sizeof(CapsuleResultVariable));\r
-\r
+  Status = EFI_SUCCESS;\r
   if ((CapsuleHeader->Flags & CAPSULE_FLAGS_PERSIST_ACROSS_RESET) != 0) {\r
     Status = WriteNewCapsuleResultVariable(&CapsuleResultVariable, sizeof(CapsuleResultVariable));\r
   }\r
@@ -338,11 +237,7 @@ RecordFmpCapsuleStatusVariable (
     DevicePathStr = NULL;\r
   }\r
 \r
-  //\r
-  // Save Local Cache\r
-  //\r
-  Status = WriteNewCapsuleResultVariableCache(CapsuleResultVariable, CapsuleResultVariableSize);\r
-\r
+  Status = EFI_SUCCESS;\r
   if ((CapsuleHeader->Flags & CAPSULE_FLAGS_PERSIST_ACROSS_RESET) != 0) {\r
     Status = WriteNewCapsuleResultVariable(CapsuleResultVariable, CapsuleResultVariableSize);\r
   }\r
@@ -482,7 +377,13 @@ InitCapsuleUpdateVariable (
   Index = 0;\r
   while (TRUE) {\r
     if (Index > 0) {\r
-      UnicodeValueToString (TempVarName, 0, Index, 0);\r
+      UnicodeValueToStringS (\r
+        TempVarName,\r
+        sizeof (CapsuleVarName) - ((UINTN)TempVarName - (UINTN)CapsuleVarName),\r
+        0,\r
+        Index,\r
+        0\r
+        );\r
     }\r
     Status = gRT->SetVariable (\r
                     CapsuleVarName,\r