]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ShellPkg/Library/UefiDpLib/DpUtilities.c
ShellPkg/dh: Modify the dump of BlockIo protocol
[mirror_edk2.git] / ShellPkg / Library / UefiDpLib / DpUtilities.c
index 063eb658c8961ea14121acbadbfceb621c16c420..c60d27d8613f0572ee13ead10644c71423138f53 100644 (file)
@@ -1,7 +1,8 @@
 /** @file\r
   Utility functions used by the Dp application.\r
 \r
-  Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.\r
+  Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.\r
+  (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<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
@@ -16,7 +17,6 @@
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/DebugLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/TimerLib.h>\r
 #include <Library/PeCoffGetEntryPointLib.h>\r
 #include <Library/PrintLib.h>\r
 #include <Library/HiiLib.h>\r
@@ -67,6 +67,10 @@ GetDuration (
   UINT64    Duration;\r
   BOOLEAN   Error;\r
 \r
+  if (Measurement->EndTimeStamp == 0) {\r
+    return 0;\r
+  }\r
+\r
   // PERF_START macros are called with a value of 1 to indicate\r
   // the beginning of time.  So, adjust the start ticker value\r
   // to the real beginning of time.\r
@@ -131,7 +135,7 @@ IsPhase(
   \r
 **/\r
 VOID\r
-GetShortPdbFileName (\r
+DpGetShortPdbFileName (\r
   IN  CHAR8     *PdbFileName,\r
   OUT CHAR16    *UnicodeBuffer\r
   )\r
@@ -150,7 +154,7 @@ GetShortPdbFileName (
     for (EndIndex = 0; PdbFileName[EndIndex] != 0; EndIndex++)\r
       ;\r
     for (IndexA = 0; PdbFileName[IndexA] != 0; IndexA++) {\r
-      if (PdbFileName[IndexA] == '\\') {\r
+      if ((PdbFileName[IndexA] == '\\') || (PdbFileName[IndexA] == '/')) {\r
         StartIndex = IndexA + 1;\r
       }\r
 \r
@@ -163,8 +167,8 @@ GetShortPdbFileName (
     for (IndexA = StartIndex; IndexA < EndIndex; IndexA++) {\r
       UnicodeBuffer[IndexU] = (CHAR16) PdbFileName[IndexA];\r
       IndexU++;\r
-      if (IndexU >= DXE_PERFORMANCE_STRING_LENGTH) {\r
-        UnicodeBuffer[DXE_PERFORMANCE_STRING_LENGTH] = 0;\r
+      if (IndexU >= DP_GAUGE_STRING_LENGTH) {\r
+        UnicodeBuffer[DP_GAUGE_STRING_LENGTH] = 0;\r
         break;\r
       }\r
     }\r
@@ -188,7 +192,7 @@ GetShortPdbFileName (
 \r
 **/\r
 VOID\r
-GetNameFromHandle (\r
+DpGetNameFromHandle (\r
   IN EFI_HANDLE   Handle\r
   )\r
 {\r
@@ -205,6 +209,10 @@ GetNameFromHandle (
   CHAR8                       *PlatformLanguage;\r
   EFI_COMPONENT_NAME2_PROTOCOL      *ComponentName2;\r
 \r
+  Image = NULL;\r
+  LoadedImageDevicePath = NULL;\r
+  DevicePath = NULL;\r
+\r
   //\r
   // Method 1: Get the name string from image PDB\r
   //\r
@@ -236,7 +244,7 @@ GetNameFromHandle (
     PdbFileName = PeCoffLoaderGetPdbPointer (Image->ImageBase);\r
 \r
     if (PdbFileName != NULL) {\r
-      GetShortPdbFileName (PdbFileName, mGaugeString);\r
+      DpGetShortPdbFileName (PdbFileName, mGaugeString);\r
       return;\r
     }\r
   }\r
@@ -274,9 +282,13 @@ GetNameFromHandle (
                   );\r
   if (!EFI_ERROR (Status) && (LoadedImageDevicePath != NULL)) {\r
     DevicePath = LoadedImageDevicePath;\r
+  } else if (Image != NULL) {\r
+    DevicePath = Image->FilePath;\r
+  }\r
 \r
+  if (DevicePath != NULL) {\r
     //\r
-    // Try to get image GUID from LoadedImageDevicePath protocol\r
+    // Try to get image GUID from image DevicePath\r
     //\r
     NameGuid = NULL;\r
     while (!IsDevicePathEndType (DevicePath)) {\r
@@ -319,7 +331,7 @@ GetNameFromHandle (
       //\r
       // Method 5: Get the name string from image DevicePath\r
       //\r
-      NameString = ConvertDevicePathToText (LoadedImageDevicePath, TRUE, FALSE);\r
+      NameString = ConvertDevicePathToText (DevicePath, TRUE, FALSE);\r
       if (NameString != NULL) {\r
         StrnCpyS (mGaugeString, DP_GAUGE_STRING_LENGTH + 1, NameString, DP_GAUGE_STRING_LENGTH);\r
         mGaugeString[DP_GAUGE_STRING_LENGTH] = 0;\r