- // Get DXE drivers performance\r
- //\r
- for (Index = 0; Index < NoHandles; Index++) {\r
- Ticker = 0;\r
- LogEntryKey = 0;\r
- EntryIndex = 0;\r
- while ((LogEntryKey = GetPerformanceMeasurement (\r
- LogEntryKey,\r
- &Handle,\r
- &Token,\r
- &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
- if (StartTicker == 1) {\r
- StartTicker = StartValue;\r
- }\r
- if (EndTicker == 1) {\r
- EndTicker = StartValue;\r
- }\r
- Ticker += CountUp ? (EndTicker - StartTicker) : (StartTicker - EndTicker);\r
- }\r
- }\r
-\r
- Duration = (UINT32) DivU64x32 (Ticker, (UINT32) Freq);\r
-\r
- if (Duration > 0) {\r
-\r
- BmGetNameFromHandle (Handles[Index], GaugeString, PERF_TOKEN_LENGTH);\r
-\r
- AsciiStrCpyS (mBmPerfData.Token, PERF_TOKEN_SIZE, GaugeString);\r
- mBmPerfData.Duration = Duration;\r
-\r
- CopyMem (Ptr, &mBmPerfData, sizeof (PERF_DATA));\r
- Ptr += sizeof (PERF_DATA);\r
-\r
- mBmPerfHeader.Count++;\r
- if (mBmPerfHeader.Count == LimitCount) {\r
- goto Done;\r
- }\r
- }\r
- }\r
-\r
- //\r
- // Get inserted performance data\r