]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Performance.c in GenericBdsLib is updated not to filter log entries that don’t contai...
authorjgong5 <jgong5@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 4 Feb 2010 04:32:09 +0000 (04:32 +0000)
committerjgong5 <jgong5@6f19259b-4bc3-4df7-8a09-765794883524>
Thu, 4 Feb 2010 04:32:09 +0000 (04:32 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@9928 6f19259b-4bc3-4df7-8a09-765794883524

IntelFrameworkModulePkg/Library/GenericBdsLib/Performance.c

index 119a6e46d24fc8e86ab9defdf88f2e4776904f7c..6bb60c1500898630c78ef8df1a1cf9dedf3e03e3 100644 (file)
@@ -164,6 +164,12 @@ WriteBootToOsPerformanceData (
   UINT64                    StartValue;\r
   UINT64                    EndValue;\r
   BOOLEAN                   CountUp;\r
+  UINTN                     EntryIndex;\r
+  UINTN                     NumPerfEntries;\r
+  //\r
+  // List of flags indicating PerfEntry contains DXE handle\r
+  //\r
+  BOOLEAN                   *PerfEntriesAsDxeHandle;\r
 \r
   //\r
   // Retrieve time stamp count as early as possible\r
@@ -224,7 +230,19 @@ WriteBootToOsPerformanceData (
   Ptr        = (UINT8 *) ((UINT32) mAcpiLowMemoryBase + sizeof (PERF_HEADER));\r
   LimitCount = (AcpiLowMemoryLength - sizeof (PERF_HEADER)) / sizeof (PERF_DATA);\r
 \r
-\r
+  NumPerfEntries = 0;\r
+  LogEntryKey    = 0;\r
+  while ((LogEntryKey = GetPerformanceMeasurement (\r
+                          LogEntryKey,\r
+                          &Handle,\r
+                          &Token,\r
+                          &Module,\r
+                          &StartTicker,\r
+                          &EndTicker)) != 0) {\r
+    NumPerfEntries++;\r
+  }\r
+  PerfEntriesAsDxeHandle = AllocateZeroPool (NumPerfEntries * sizeof (BOOLEAN));\r
+  ASSERT (PerfEntriesAsDxeHandle != NULL);\r
   \r
   //\r
   // Get DXE drivers performance\r
@@ -232,6 +250,7 @@ WriteBootToOsPerformanceData (
   for (Index = 0; Index < NoHandles; Index++) {\r
     Ticker = 0;\r
     LogEntryKey = 0;\r
+    EntryIndex  = 0;\r
     while ((LogEntryKey = GetPerformanceMeasurement (\r
                             LogEntryKey,\r
                             &Handle,\r
@@ -239,6 +258,10 @@ WriteBootToOsPerformanceData (
                             &Module,\r
                             &StartTicker,\r
                             &EndTicker)) != 0) {\r
+      if (Handle == Handles[Index] && !PerfEntriesAsDxeHandle[EntryIndex]) {\r
+        PerfEntriesAsDxeHandle[EntryIndex] = TRUE;\r
+      }\r
+      EntryIndex++;\r
       if ((Handle == Handles[Index]) && (EndTicker != 0)) {\r
         Ticker += CountUp ? (EndTicker - StartTicker) : (StartTicker - EndTicker);\r
       }\r
@@ -263,12 +286,11 @@ WriteBootToOsPerformanceData (
     }\r
   }\r
 \r
-  FreePool (Handles);\r
-\r
   //\r
   // Get inserted performance data\r
   //\r
   LogEntryKey = 0;\r
+  EntryIndex  = 0;\r
   while ((LogEntryKey = GetPerformanceMeasurement (\r
                           LogEntryKey,\r
                           &Handle,\r
@@ -276,7 +298,7 @@ WriteBootToOsPerformanceData (
                           &Module,\r
                           &StartTicker,\r
                           &EndTicker)) != 0) {\r
-    if (Handle == NULL && EndTicker != 0) {\r
+    if (!PerfEntriesAsDxeHandle[EntryIndex] && EndTicker != 0) {\r
 \r
       ZeroMem (&mPerfData, sizeof (PERF_DATA));\r
 \r
@@ -293,10 +315,14 @@ WriteBootToOsPerformanceData (
         goto Done;\r
       }\r
     }\r
+    EntryIndex++;\r
   }\r
 \r
 Done:\r
 \r
+  FreePool (Handles);\r
+  FreePool (PerfEntriesAsDxeHandle);\r
+\r
   mPerfHeader.Signiture = PERFORMANCE_SIGNATURE;\r
 \r
   //\r