PerformancePkg Dp_App: Remove TimerLib dependency
Current Dp_App implementation depends on TimerLib, as different platforms may implement and use their own TimerLib, it makes the dp application needs to be built by platform. The TimerLib dependency can be removed by using performance property configuration table to make Dp_App to be generic. Cc: Andrew Fish <afish@apple.com> Cc: Michael Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <liming.gao@intel.com> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Cinnamon Shia <cinnamon.shia@hpe.com> Cc: Jaben Carsey <jaben.carsey@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Star Zeng <star.zeng@intel.com> Reviewed-by: Andrew Fish <afish@apple.com> Reviewed-by: Jaben Carsey <jaben.carsey@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
committed by
Michael Kinney
parent
cfb0aba793
commit
139351093d
@@ -13,7 +13,7 @@
|
||||
Dp uses this information to group records in different ways. It also uses
|
||||
timer information to calculate elapsed time for each measurement.
|
||||
|
||||
Copyright (c) 2009 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||
Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.<BR>
|
||||
(C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP<BR>
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
@@ -30,7 +30,6 @@
|
||||
#include <Library/BaseLib.h>
|
||||
#include <Library/MemoryAllocationLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/TimerLib.h>
|
||||
#include <Library/UefiLib.h>
|
||||
#include <Library/UefiHiiServicesLib.h>
|
||||
#include <Library/HiiLib.h>
|
||||
@@ -201,14 +200,13 @@ InitializeDp (
|
||||
IN EFI_SYSTEM_TABLE *SystemTable
|
||||
)
|
||||
{
|
||||
UINT64 Freq;
|
||||
UINT64 Ticker;
|
||||
UINT32 ListIndex;
|
||||
|
||||
LIST_ENTRY *ParamPackage;
|
||||
CONST CHAR16 *CmdLineArg;
|
||||
EFI_STRING StringPtr;
|
||||
UINTN Number2Display;
|
||||
PERFORMANCE_PROPERTY *PerformanceProperty;
|
||||
UINT32 ListIndex;
|
||||
|
||||
LIST_ENTRY *ParamPackage;
|
||||
CONST CHAR16 *CmdLineArg;
|
||||
EFI_STRING StringPtr;
|
||||
UINTN Number2Display;
|
||||
|
||||
EFI_STATUS Status;
|
||||
BOOLEAN SummaryMode;
|
||||
@@ -267,11 +265,6 @@ InitializeDp (
|
||||
StringDpOptionLc = NULL;
|
||||
StringPtr = NULL;
|
||||
|
||||
// Get DP's entry time as soon as possible.
|
||||
// This is used as the Shell-Phase end time.
|
||||
//
|
||||
Ticker = GetPerformanceCounter ();
|
||||
|
||||
//
|
||||
// Retrieve HII package list from ImageHandle
|
||||
//
|
||||
@@ -406,10 +399,16 @@ InitializeDp (
|
||||
// StartCount = Value loaded into the counter when it starts counting
|
||||
// EndCount = Value counter counts to before it needs to be reset
|
||||
//
|
||||
Freq = GetPerformanceCounterProperties (&TimerInfo.StartCount, &TimerInfo.EndCount);
|
||||
Status = EfiGetSystemConfigurationTable (&gPerformanceProtocolGuid, &PerformanceProperty);
|
||||
if (EFI_ERROR (Status)) {
|
||||
PrintToken (STRING_TOKEN (STR_PERF_PROPERTY_NOT_FOUND));
|
||||
goto Done;
|
||||
}
|
||||
|
||||
// Convert the Frequency from Hz to KHz
|
||||
TimerInfo.Frequency = (UINT32)DivU64x32 (Freq, 1000);
|
||||
TimerInfo.Frequency = (UINT32)DivU64x32 (PerformanceProperty->Frequency, 1000);
|
||||
TimerInfo.StartCount = PerformanceProperty->TimerStartValue;
|
||||
TimerInfo.EndCount = PerformanceProperty->TimerEndValue;
|
||||
|
||||
// Determine in which direction the performance counter counts.
|
||||
TimerInfo.CountUp = (BOOLEAN) (TimerInfo.EndCount >= TimerInfo.StartCount);
|
||||
@@ -487,7 +486,7 @@ InitializeDp (
|
||||
else {
|
||||
//------------- Begin Cooked Mode Processing
|
||||
if (TraceMode) {
|
||||
ProcessPhases ( Ticker );
|
||||
ProcessPhases ();
|
||||
if ( ! SummaryMode) {
|
||||
Status = ProcessHandles ( ExcludeMode);
|
||||
if (Status == EFI_ABORTED) {
|
||||
|
Reference in New Issue
Block a user