From nobody Sun May 5 18:08:44 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; spf=none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) smtp.mailfrom=edk2-devel-bounces@lists.01.org Return-Path: Received: from ml01.01.org (ml01.01.org [198.145.21.10]) by mx.zohomail.com with SMTPS id 1513156913141529.6200852157713; Wed, 13 Dec 2017 01:21:53 -0800 (PST) Received: from [127.0.0.1] (localhost [IPv6:::1]) by ml01.01.org (Postfix) with ESMTP id F41B521B02834; Wed, 13 Dec 2017 01:17:11 -0800 (PST) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id B2CD2220EE136 for ; Wed, 13 Dec 2017 01:17:09 -0800 (PST) Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Dec 2017 01:19:47 -0800 Received: from ray-dev.ccr.corp.intel.com ([10.239.9.14]) by FMSMGA003.fm.intel.com with ESMTP; 13 Dec 2017 01:19:44 -0800 X-Original-To: edk2-devel@lists.01.org Received-SPF: none (zoho.com: 198.145.21.10 is neither permitted nor denied by domain of lists.01.org) client-ip=198.145.21.10; envelope-from=edk2-devel-bounces@lists.01.org; helo=ml01.01.org; Received-SPF: Permerror (SPF Permanent Error: More than 10 MX records returned) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=ruiyu.ni@intel.com; receiver=edk2-devel@lists.01.org X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,397,1508828400"; d="scan'208";a="11461130" From: Ruiyu Ni To: edk2-devel@lists.01.org Date: Wed, 13 Dec 2017 17:19:41 +0800 Message-Id: <20171213091941.244868-1-ruiyu.ni@intel.com> X-Mailer: git-send-email 2.15.1.windows.2 MIME-Version: 1.0 Subject: [edk2] [PATCH] PerformancePkg: Remove it X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Jaben Carsey , Daryl McDaniel Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Errors-To: edk2-devel-bounces@lists.01.org Sender: "edk2-devel" X-ZohoMail: RSF_4 Z_629925259 SPT_0 PerformancePkg contains following components: 1. TscTimerLib 2. Dp_App 3. Header files. #1 has already been deprecated. #2 can be removed because DpApp was added to ShellPkg. #3 Header files are not used by DpApp and MdeModulePkg/PerformanceLib instances. In summary, this package is no longer useful. All related platforms have been updated to remove the references. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Ruiyu Ni Cc: Jaben Carsey Cc: Daryl McDaniel Reviewed-by: Jaben Carsey --- PerformancePkg/Dp_App/Dp.c | 559 ------------- PerformancePkg/Dp_App/Dp.h | 101 --- PerformancePkg/Dp_App/Dp.inf | 80 -- PerformancePkg/Dp_App/DpInternal.h | 383 --------- PerformancePkg/Dp_App/DpProfile.c | 102 --- PerformancePkg/Dp_App/DpStrings.uni | 281 ------- PerformancePkg/Dp_App/DpTrace.c | 879 -----------------= ---- PerformancePkg/Dp_App/DpUtilities.c | 489 ------------ PerformancePkg/Dp_App/Literals.c | 22 - PerformancePkg/Dp_App/Literals.h | 26 - .../Include/Guid/PerformancePkgTokenSpace.h | 25 - PerformancePkg/Include/Guid/TscFrequency.h | 25 - PerformancePkg/Include/Ich/GenericIch.h | 55 -- PerformancePkg/Include/PerformanceTokens.h | 28 - .../Library/TscTimerLib/BaseTscTimerLib.c | 45 -- .../Library/TscTimerLib/BaseTscTimerLib.inf | 59 -- .../Library/TscTimerLib/DxeTscTimerLib.c | 102 --- .../Library/TscTimerLib/DxeTscTimerLib.inf | 64 -- .../Library/TscTimerLib/PeiTscTimerLib.c | 76 -- .../Library/TscTimerLib/PeiTscTimerLib.inf | 60 -- .../Library/TscTimerLib/TscTimerLibInternal.h | 55 -- .../Library/TscTimerLib/TscTimerLibShare.c | 275 ------- PerformancePkg/PerformancePkg.dec | 37 - PerformancePkg/PerformancePkg.dsc | 68 -- 24 files changed, 3896 deletions(-) delete mode 100644 PerformancePkg/Dp_App/Dp.c delete mode 100644 PerformancePkg/Dp_App/Dp.h delete mode 100644 PerformancePkg/Dp_App/Dp.inf delete mode 100644 PerformancePkg/Dp_App/DpInternal.h delete mode 100644 PerformancePkg/Dp_App/DpProfile.c delete mode 100644 PerformancePkg/Dp_App/DpStrings.uni delete mode 100644 PerformancePkg/Dp_App/DpTrace.c delete mode 100644 PerformancePkg/Dp_App/DpUtilities.c delete mode 100644 PerformancePkg/Dp_App/Literals.c delete mode 100644 PerformancePkg/Dp_App/Literals.h delete mode 100644 PerformancePkg/Include/Guid/PerformancePkgTokenSpace.h delete mode 100644 PerformancePkg/Include/Guid/TscFrequency.h delete mode 100644 PerformancePkg/Include/Ich/GenericIch.h delete mode 100644 PerformancePkg/Include/PerformanceTokens.h delete mode 100644 PerformancePkg/Library/TscTimerLib/BaseTscTimerLib.c delete mode 100644 PerformancePkg/Library/TscTimerLib/BaseTscTimerLib.inf delete mode 100644 PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.c delete mode 100644 PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.inf delete mode 100644 PerformancePkg/Library/TscTimerLib/PeiTscTimerLib.c delete mode 100644 PerformancePkg/Library/TscTimerLib/PeiTscTimerLib.inf delete mode 100644 PerformancePkg/Library/TscTimerLib/TscTimerLibInternal.h delete mode 100644 PerformancePkg/Library/TscTimerLib/TscTimerLibShare.c delete mode 100644 PerformancePkg/PerformancePkg.dec delete mode 100644 PerformancePkg/PerformancePkg.dsc diff --git a/PerformancePkg/Dp_App/Dp.c b/PerformancePkg/Dp_App/Dp.c deleted file mode 100644 index 484ef2d50b..0000000000 --- a/PerformancePkg/Dp_App/Dp.c +++ /dev/null @@ -1,559 +0,0 @@ -/** @file - Shell application for Displaying Performance Metrics. - - The Dp application reads performance data and presents it in several - different formats depending upon the needs of the user. Both - Trace and Measured Profiling information is processed and presented. - - Dp uses the "PerformanceLib" to read the measurement records. - The "TimerLib" provides information about the timer, such as frequency, - beginning, and ending counter values. - Measurement records contain identifying information (Handle, Token, Modu= le) - and start and end time values. - Dp uses this information to group records in different ways. It also us= es - timer information to calculate elapsed time for each measurement. -=20 - Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
- (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php -=20 - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -**/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include "Dp.h" -#include "Literals.h" -#include "DpInternal.h" - -// -// String token ID of help message text. -// Shell supports to find help message in the resource section of an appli= cation image if -// .MAN file is not found. This global variable is added to make build too= l recognizes -// that the help string is consumed by user and then build tool will add t= he string into -// the resource section. Thus the application can use '-?' option to show = help message in -// Shell. -// -GLOBAL_REMOVE_IF_UNREFERENCED EFI_STRING_ID mDpStrEngHelpTokenId =3D STRIN= G_TOKEN (STR_DP_HELP_INFORMATION); - -// -/// Module-Global Variables -///@{ -EFI_HII_HANDLE gHiiHandle; -SHELL_PARAM_ITEM *DpParamList =3D NULL; -CHAR16 *mPrintTokenBuffer =3D NULL; -CHAR16 mGaugeString[DP_GAUGE_STRING_LENGTH + 1]; -CHAR16 mUnicodeToken[DXE_PERFORMANCE_STRING_SIZE]; -UINT64 mInterestThreshold; -BOOLEAN mShowId =3D FALSE; - -PERF_SUMMARY_DATA SummaryData =3D { 0 }; ///< Create the SummaryData st= ructure and init. to ZERO. - -/// Timer Specific Information. -TIMER_INFO TimerInfo; - -/// Items for which to gather cumulative statistics. -PERF_CUM_DATA CumData[] =3D { - PERF_INIT_CUM_DATA (LOAD_IMAGE_TOK), - PERF_INIT_CUM_DATA (START_IMAGE_TOK), - PERF_INIT_CUM_DATA (DRIVERBINDING_START_TOK), - PERF_INIT_CUM_DATA (DRIVERBINDING_SUPPORT_TOK) -}; - -/// Number of items for which we are gathering cumulative statistics. -UINT32 const NumCum =3D sizeof(CumData) / sizeof(PERF_CUM_DATA); - -PARAM_ITEM_LIST ParamList[] =3D { - {STRING_TOKEN (STR_DP_OPTION_QH), TypeFlag}, // -? Help - {STRING_TOKEN (STR_DP_OPTION_LH), TypeFlag}, // -h Help - {STRING_TOKEN (STR_DP_OPTION_UH), TypeFlag}, // -H Help - {STRING_TOKEN (STR_DP_OPTION_LV), TypeFlag}, // -v Verbose Mode - {STRING_TOKEN (STR_DP_OPTION_UA), TypeFlag}, // -A All, Cooked - {STRING_TOKEN (STR_DP_OPTION_UR), TypeFlag}, // -R RAW All - {STRING_TOKEN (STR_DP_OPTION_LS), TypeFlag}, // -s Summary -#if PROFILING_IMPLEMENTED - {STRING_TOKEN (STR_DP_OPTION_UP), TypeFlag}, // -P Dump Profile Data - {STRING_TOKEN (STR_DP_OPTION_UT), TypeFlag}, // -T Dump Trace Data -#endif - {STRING_TOKEN (STR_DP_OPTION_LX), TypeFlag}, // -x eXclude Cumulativ= e Items - {STRING_TOKEN (STR_DP_OPTION_LI), TypeFlag}, // -i Display Identifier - {STRING_TOKEN (STR_DP_OPTION_LC), TypeValue}, // -c Display cumulativ= e data. - {STRING_TOKEN (STR_DP_OPTION_LN), TypeValue}, // -n # Number of records= to display for A and R - {STRING_TOKEN (STR_DP_OPTION_LT), TypeValue} // -t # Threshold of inte= rest - }; - -///@} - -/** - Transfer the param list value and get the command line parse. - -**/ -VOID -InitialShellParamList( void ) -{ - UINT32 ListIndex; - UINT32 ListLength; =20 - - // - // Allocate one more for the end tag. - // - ListLength =3D ARRAY_SIZE (ParamList) + 1; =20 - DpParamList =3D AllocatePool (sizeof (SHELL_PARAM_ITEM) * ListLength); - ASSERT (DpParamList !=3D NULL); - =20 - for (ListIndex =3D 0; ListIndex < ListLength - 1; ListIndex ++) - {=20 - DpParamList[ListIndex].Name =3D HiiGetString (gHiiHandle, ParamList[Li= stIndex].Token, NULL); =20 - DpParamList[ListIndex].Type =3D ParamList[ListIndex].Type; - } - DpParamList[ListIndex].Name =3D NULL; - DpParamList[ListIndex].Type =3D TypeMax; -} - -/** - Display Usage and Help information. -**/ -VOID -ShowHelp( void ) -{ - PrintToken (STRING_TOKEN (STR_DP_HELP_HEAD)); -#if PROFILING_IMPLEMENTED - PrintToken (STRING_TOKEN (STR_DP_HELP_FLAGS)); -#else - PrintToken (STRING_TOKEN (STR_DP_HELP_FLAGS_2)); -#endif // PROFILING_IMPLEMENTED - PrintToken (STRING_TOKEN (STR_DP_HELP_PAGINATE)); - PrintToken (STRING_TOKEN (STR_DP_HELP_VERBOSE)); - PrintToken (STRING_TOKEN (STR_DP_HELP_EXCLUDE)); - PrintToken (STRING_TOKEN (STR_DP_HELP_STAT)); - PrintToken (STRING_TOKEN (STR_DP_HELP_ALL)); - PrintToken (STRING_TOKEN (STR_DP_HELP_RAW)); -#if PROFILING_IMPLEMENTED - PrintToken (STRING_TOKEN (STR_DP_HELP_TRACE)); - PrintToken (STRING_TOKEN (STR_DP_HELP_PROFILE)); -#endif // PROFILING_IMPLEMENTED - PrintToken (STRING_TOKEN (STR_DP_HELP_THRESHOLD)); - PrintToken (STRING_TOKEN (STR_DP_HELP_COUNT)); - PrintToken (STRING_TOKEN (STR_DP_HELP_ID)); - PrintToken (STRING_TOKEN (STR_DP_HELP_CUM_DATA)); - PrintToken (STRING_TOKEN (STR_DP_HELP_HELP)); - Print(L"\n"); -} - -/** - Display the trailing Verbose information. -**/ -VOID -DumpStatistics( void ) -{ - EFI_STRING StringPtr; - EFI_STRING StringPtrUnknown; - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECT= ION_STATISTICS), NULL); - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (StringPtr =3D=3D NULL) ? StringPtrUnknown : StringPtr); - - PrintToken( STRING_TOKEN (STR_DP_STATS_NUMTRACE), SummaryData.NumT= race); - PrintToken( STRING_TOKEN (STR_DP_STATS_NUMINCOMPLETE), SummaryData.NumI= ncomplete); - PrintToken( STRING_TOKEN (STR_DP_STATS_NUMPHASES), SummaryData.NumS= ummary); - PrintToken( STRING_TOKEN (STR_DP_STATS_NUMHANDLES), SummaryData.NumH= andles, SummaryData.NumTrace - SummaryData.NumHandles); - PrintToken( STRING_TOKEN (STR_DP_STATS_NUMPEIMS), SummaryData.NumP= EIMs); - PrintToken( STRING_TOKEN (STR_DP_STATS_NUMGLOBALS), SummaryData.NumG= lobal); -#if PROFILING_IMPLEMENTED - PrintToken( STRING_TOKEN (STR_DP_STATS_NUMPROFILE), SummaryData.NumP= rofile); -#endif // PROFILING_IMPLEMENTED - FreePool (StringPtr); - FreePool (StringPtrUnknown); -} - -/** - Dump performance data. - =20 - @param[in] ImageHandle The image handle. - @param[in] SystemTable The system table. - - @retval EFI_SUCCESS Command completed successfully. - @retval EFI_INVALID_PARAMETER Command usage error. - @retval EFI_ABORTED The user aborts the operation. - @retval value Unknown error. -**/ -EFI_STATUS -EFIAPI -InitializeDp ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - PERFORMANCE_PROPERTY *PerformanceProperty; - UINT32 ListIndex; - - LIST_ENTRY *ParamPackage; - CONST CHAR16 *CmdLineArg; - EFI_STRING StringPtr; - UINTN Number2Display; - - EFI_STATUS Status; - BOOLEAN SummaryMode; - BOOLEAN VerboseMode; - BOOLEAN AllMode; - BOOLEAN RawMode; - BOOLEAN TraceMode; - BOOLEAN ProfileMode; - BOOLEAN ExcludeMode; - BOOLEAN CumulativeMode; - CONST CHAR16 *CustomCumulativeToken; - PERF_CUM_DATA *CustomCumulativeData; - UINTN NameSize; - EFI_HII_PACKAGE_LIST_HEADER *PackageList; - - EFI_STRING StringDpOptionQh; - EFI_STRING StringDpOptionLh; - EFI_STRING StringDpOptionUh; - EFI_STRING StringDpOptionLv; - EFI_STRING StringDpOptionUs; - EFI_STRING StringDpOptionLs; - EFI_STRING StringDpOptionUa; - EFI_STRING StringDpOptionUr; - EFI_STRING StringDpOptionUt; - EFI_STRING StringDpOptionUp; - EFI_STRING StringDpOptionLx; - EFI_STRING StringDpOptionLn; - EFI_STRING StringDpOptionLt; - EFI_STRING StringDpOptionLi; - EFI_STRING StringDpOptionLc; - =20 - SummaryMode =3D FALSE; - VerboseMode =3D FALSE; - AllMode =3D FALSE; - RawMode =3D FALSE; - TraceMode =3D FALSE; - ProfileMode =3D FALSE; - ExcludeMode =3D FALSE; - CumulativeMode =3D FALSE; - CustomCumulativeData =3D NULL; - - StringDpOptionQh =3D NULL; - StringDpOptionLh =3D NULL; - StringDpOptionUh =3D NULL; - StringDpOptionLv =3D NULL; - StringDpOptionUs =3D NULL; - StringDpOptionLs =3D NULL; - StringDpOptionUa =3D NULL; - StringDpOptionUr =3D NULL; - StringDpOptionUt =3D NULL; - StringDpOptionUp =3D NULL; - StringDpOptionLx =3D NULL; - StringDpOptionLn =3D NULL; - StringDpOptionLt =3D NULL; - StringDpOptionLi =3D NULL; - StringDpOptionLc =3D NULL; - StringPtr =3D NULL; - - // - // Retrieve HII package list from ImageHandle - // - Status =3D gBS->OpenProtocol ( - ImageHandle, - &gEfiHiiPackageListProtocolGuid, - (VOID **) &PackageList, - ImageHandle, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (EFI_ERROR (Status)) { - return Status; - } - - // - // Publish HII package list to HII Database. - // - Status =3D gHiiDatabase->NewPackageList ( - gHiiDatabase, - PackageList, - NULL, - &gHiiHandle - ); - if (EFI_ERROR (Status)) { - return Status; - } - ASSERT (gHiiHandle !=3D NULL); - =20 - - // Initial the command list - // - InitialShellParamList (); - =20 -/*************************************************************************= *** -**** Process Command Line arguments *= *** -**************************************************************************= **/ - Status =3D ShellCommandLineParse (DpParamList, &ParamPackage, NULL, TRUE= ); - - if (EFI_ERROR(Status)) { - PrintToken (STRING_TOKEN (STR_DP_INVALID_ARG)); - ShowHelp(); - } - else { - StringDpOptionQh =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_OP= TION_QH), NULL); - StringDpOptionLh =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_OP= TION_LH), NULL); - StringDpOptionUh =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_OP= TION_UH), NULL); - =20 - if (ShellCommandLineGetFlag (ParamPackage, StringDpOptionQh) || - ShellCommandLineGetFlag (ParamPackage, StringDpOptionLh) || - ShellCommandLineGetFlag (ParamPackage, StringDpOptionUh)) - { - ShowHelp(); - } - else { - StringDpOptionLv =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_LV), NULL); - StringDpOptionUs =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_US), NULL); - StringDpOptionLs =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_LS), NULL); - StringDpOptionUa =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_UA), NULL); - StringDpOptionUr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_UR), NULL); - StringDpOptionUt =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_UT), NULL); - StringDpOptionUp =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_UP), NULL); - StringDpOptionLx =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_LX), NULL); - StringDpOptionLn =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_LN), NULL); - StringDpOptionLt =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_LT), NULL); - StringDpOptionLi =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_LI), NULL); - StringDpOptionLc =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_= OPTION_LC), NULL); - =20 - // Boolean Options - //=20 - VerboseMode =3D ShellCommandLineGetFlag (ParamPackage, StringDpOptio= nLv); - SummaryMode =3D (BOOLEAN) (ShellCommandLineGetFlag (ParamPackage, St= ringDpOptionUs) || - ShellCommandLineGetFlag (ParamPackage, StringDpOptionL= s)); - AllMode =3D ShellCommandLineGetFlag (ParamPackage, StringDpOptio= nUa); - RawMode =3D ShellCommandLineGetFlag (ParamPackage, StringDpOptio= nUr); -#if PROFILING_IMPLEMENTED - TraceMode =3D ShellCommandLineGetFlag (ParamPackage, StringDpOptio= nUt); - ProfileMode =3D ShellCommandLineGetFlag (ParamPackage, StringDpOptio= nUp); -#endif // PROFILING_IMPLEMENTED - ExcludeMode =3D ShellCommandLineGetFlag (ParamPackage, StringDpOptio= nLx); - mShowId =3D ShellCommandLineGetFlag (ParamPackage, StringDpOpti= onLi); - CumulativeMode =3D ShellCommandLineGetFlag (ParamPackage, StringDpOp= tionLc); - - // Options with Values - CmdLineArg =3D ShellCommandLineGetValue (ParamPackage, StringDpOpti= onLn); - if (CmdLineArg =3D=3D NULL) { - Number2Display =3D DEFAULT_DISPLAYCOUNT; - } - else { - Number2Display =3D StrDecimalToUintn(CmdLineArg); - if (Number2Display =3D=3D 0) { - Number2Display =3D MAXIMUM_DISPLAYCOUNT; - } - } - CmdLineArg =3D ShellCommandLineGetValue (ParamPackage, StringDpOpti= onLt); - if (CmdLineArg =3D=3D NULL) { - mInterestThreshold =3D DEFAULT_THRESHOLD; // 1ms :=3D 1,000 us - } - else { - mInterestThreshold =3D StrDecimalToUint64(CmdLineArg); - } - // Handle Flag combinations and default behaviors - // If both TraceMode and ProfileMode are FALSE, set them both to TRUE - if ((! TraceMode) && (! ProfileMode)) { - TraceMode =3D TRUE; -#if PROFILING_IMPLEMENTED - ProfileMode =3D TRUE; -#endif // PROFILING_IMPLEMENTED - } - - // - // Init the custom cumulative data. - // - CustomCumulativeToken =3D ShellCommandLineGetValue (ParamPackage, String= DpOptionLc); - if (CustomCumulativeToken !=3D NULL) { - CustomCumulativeData =3D AllocateZeroPool (sizeof (PERF_CUM_DATA)); - ASSERT (CustomCumulativeData !=3D NULL); - CustomCumulativeData->MinDur =3D PERF_MAXDUR; - CustomCumulativeData->MaxDur =3D 0; - CustomCumulativeData->Count =3D 0; - CustomCumulativeData->Duration =3D 0; - NameSize =3D StrLen (CustomCumulativeToken) + 1; - CustomCumulativeData->Name =3D AllocateZeroPool (NameSize); - UnicodeStrToAsciiStrS (CustomCumulativeToken, CustomCumulativeData->Na= me, NameSize); - } - -/*************************************************************************= *** -**** Timer specific processing *= *** -**************************************************************************= **/ - // Get the Performance counter characteristics: - // Freq =3D Frequency in Hz - // StartCount =3D Value loaded into the counter when it starts co= unting - // EndCount =3D Value counter counts to before it needs to be r= eset - // - Status =3D EfiGetSystemConfigurationTable (&gPerformanceProtocolGuid= , (VOID **) &PerformanceProperty); - if (EFI_ERROR (Status) || (PerformanceProperty =3D=3D NULL)) { - PrintToken (STRING_TOKEN (STR_PERF_PROPERTY_NOT_FOUND)); - goto Done; - } - - // Convert the Frequency from Hz to KHz - TimerInfo.Frequency =3D (UINT32)DivU64x32 (PerformanceProperty->Fre= quency, 1000); - TimerInfo.StartCount =3D PerformanceProperty->TimerStartValue; - TimerInfo.EndCount =3D PerformanceProperty->TimerEndValue; - - // Determine in which direction the performance counter counts. - TimerInfo.CountUp =3D (BOOLEAN) (TimerInfo.EndCount >=3D TimerInfo.S= tartCount); - -/*************************************************************************= *** -**** Print heading *= *** -**************************************************************************= **/ - // print DP's build version - PrintToken (STRING_TOKEN (STR_DP_BUILD_REVISION), DP_MAJOR_VERSION, = DP_MINOR_VERSION); - - // print performance timer characteristics - PrintToken (STRING_TOKEN (STR_DP_KHZ), TimerInfo.Frequency); = // Print Timer frequency in KHz - - if ((VerboseMode) && - (! RawMode) - ) { - StringPtr =3D HiiGetString (gHiiHandle, - (EFI_STRING_ID) (TimerInfo.CountUp ? STRING_TOKEN (S= TR_DP_UP) : STRING_TOKEN (STR_DP_DOWN)), - NULL); - ASSERT (StringPtr !=3D NULL); - PrintToken (STRING_TOKEN (STR_DP_TIMER_PROPERTIES), // Print Tim= er count range and direction - StringPtr, - TimerInfo.StartCount, - TimerInfo.EndCount - ); - PrintToken (STRING_TOKEN (STR_DP_VERBOSE_THRESHOLD), mInterestThre= shold); - } - -/* ***********************************************************************= *** -**** Print Sections based on command line options -**** -**** Option modes have the following priority: -**** v Verbose -- Valid in combination with any other options -**** t Threshold -- Modifies All, Raw, and Cooked output -**** Default is 0 for All and Raw mode -**** Default is DEFAULT_THRESHOLD for "Cooked" mode -**** n Number2Display Used by All and Raw mode. Otherwise ignored. -**** A All -- R and S options are ignored -**** R Raw -- S option is ignored -**** s Summary -- Modifies "Cooked" output only -**** Cooked (Default) -**** -**** The All, Raw, and Cooked modes are modified by the Trace and Profile -**** options. -**** !T && !P :=3D (0) Default, Both are displayed -**** T && !P :=3D (1) Only Trace records are displayed -**** !T && P :=3D (2) Only Profile records are displayed -**** T && P :=3D (3) Same as Default, both are displayed -**************************************************************************= **/ - GatherStatistics (CustomCumulativeData); - if (CumulativeMode) { =20 - ProcessCumulative (CustomCumulativeData); - } else if (AllMode) { - if (TraceMode) { - Status =3D DumpAllTrace( Number2Display, ExcludeMode); - if (Status =3D=3D EFI_ABORTED) { - goto Done; - } - } - if (ProfileMode) { - DumpAllProfile( Number2Display, ExcludeMode); - } - } - else if (RawMode) { - if (TraceMode) { - Status =3D DumpRawTrace( Number2Display, ExcludeMode); - if (Status =3D=3D EFI_ABORTED) { - goto Done; - } - } - if (ProfileMode) { - DumpRawProfile( Number2Display, ExcludeMode); - } - } - else { - //------------- Begin Cooked Mode Processing - if (TraceMode) { - ProcessPhases (); - if ( ! SummaryMode) { - Status =3D ProcessHandles ( ExcludeMode); - if (Status =3D=3D EFI_ABORTED) { - goto Done; - } - - Status =3D ProcessPeims (); - if (Status =3D=3D EFI_ABORTED) { - goto Done; - } - - Status =3D ProcessGlobal (); - if (Status =3D=3D EFI_ABORTED) { - goto Done; - } - - ProcessCumulative (NULL); - } - } - if (ProfileMode) { - DumpAllProfile( Number2Display, ExcludeMode); - } - } //------------- End of Cooked Mode Processing - if ( VerboseMode || SummaryMode) { - DumpStatistics(); - } - } - } - -Done: - - // - // Free the memory allocate from HiiGetString - // - ListIndex =3D 0; - while (DpParamList[ListIndex].Name !=3D NULL) { - FreePool (DpParamList[ListIndex].Name); - ListIndex ++; - } =20 - FreePool (DpParamList); - - SafeFreePool (StringDpOptionQh); - SafeFreePool (StringDpOptionLh); - SafeFreePool (StringDpOptionUh); - SafeFreePool (StringDpOptionLv); - SafeFreePool (StringDpOptionUs); - SafeFreePool (StringDpOptionLs); - SafeFreePool (StringDpOptionUa); - SafeFreePool (StringDpOptionUr); - SafeFreePool (StringDpOptionUt); - SafeFreePool (StringDpOptionUp); - SafeFreePool (StringDpOptionLx); - SafeFreePool (StringDpOptionLn); - SafeFreePool (StringDpOptionLt); - SafeFreePool (StringDpOptionLi); - SafeFreePool (StringDpOptionLc); - SafeFreePool (StringPtr); - SafeFreePool (mPrintTokenBuffer); - - if (ParamPackage !=3D NULL) { - ShellCommandLineFreeVarList (ParamPackage); - } - if (CustomCumulativeData !=3D NULL) { - SafeFreePool (CustomCumulativeData->Name); - } - SafeFreePool (CustomCumulativeData); - - HiiRemovePackages (gHiiHandle); - return Status; -} diff --git a/PerformancePkg/Dp_App/Dp.h b/PerformancePkg/Dp_App/Dp.h deleted file mode 100644 index 5fc3335279..0000000000 --- a/PerformancePkg/Dp_App/Dp.h +++ /dev/null @@ -1,101 +0,0 @@ -/** @file - Common declarations for the Dp Performance Reporting Utility. - - Copyright (c) 2009 - 2012, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -**/ - -#ifndef _EFI_APP_DP_H_ -#define _EFI_APP_DP_H_ - -#include - -#define DP_MAJOR_VERSION 2 -#define DP_MINOR_VERSION 3 - -/** - * The value assigned to DP_DEBUG controls which debug output - * is generated. Set it to ZERO to disable. -**/ -#define DP_DEBUG 0 - -/** - * Set to 1 once Profiling has been implemented in order to enable - * profiling related options and report output. -**/ -#define PROFILING_IMPLEMENTED 0 - -#define DEFAULT_THRESHOLD 1000 ///< One millisecond. -#define DEFAULT_DISPLAYCOUNT 50 -#define MAXIMUM_DISPLAYCOUNT 999999 ///< Arbitrary maximum reasonable = number. - -#define PERF_MAXDUR 0xFFFFFFFFFFFFFFFFULL - -/// Determine whether 0 <=3D C < L. If L =3D=3D 0, return true regardles= s of C. -#define WITHIN_LIMIT( C, L) ( ((L) =3D=3D 0) || ((C) < (L)) ) - -/// Structure for storing Timer specific information. -typedef struct { - UINT64 StartCount; ///< Value timer is initialized with. - UINT64 EndCount; ///< Value timer has just before it wraps. - UINT32 Frequency; ///< Timer count frequency in KHz. - BOOLEAN CountUp; ///< TRUE if the counter counts up. -} TIMER_INFO; - -/** Initialize one PERF_CUM_DATA structure instance for token t. - * - * This parameterized macro takes a single argument, t, which is expected - * to resolve to a pointer to an ASCII string literal. This parameter may - * take any one of the following forms: - * - PERF_INIT_CUM_DATA("Token") A string literal - * - PERF_INIT_CUM_DATA(pointer) A pointer -- CHAR8 *pointer; - * - PERF_INIT_CUM_DATA(array) Address of an array -- CHAR8 a= rray[N]; -**/ -#define PERF_INIT_CUM_DATA(t) { 0ULL, PERF_MAXDUR, 0ULL, (t), 0U } - -typedef struct { - UINT64 Duration; ///< Cumulative duration for this item. - UINT64 MinDur; ///< Smallest duration encountered. - UINT64 MaxDur; ///< Largest duration encountered. - CHAR8 *Name; ///< ASCII name of this item. - UINT32 Count; ///< Total number of measurements accumulated. -} PERF_CUM_DATA; - -typedef struct { - UINT32 NumTrace; ///< Number of recorded TRACE pe= rformance measurements. - UINT32 NumProfile; ///< Number of recorded PROFILE = performance measurements. - UINT32 NumIncomplete; ///< Number of measurements with= no END value. - UINT32 NumSummary; ///< Number of summary section m= easurements. - UINT32 NumHandles; ///< Number of measurements with= handles. - UINT32 NumPEIMs; ///< Number of measurements of P= EIMs. - UINT32 NumGlobal; ///< Number of measurements with= END value and NULL handle. -} PERF_SUMMARY_DATA; - -typedef struct { - CONST VOID *Handle; - CONST CHAR8 *Token; ///< Measured token string name. - CONST CHAR8 *Module; ///< Module string name. - UINT64 StartTimeStamp; ///< Start time point. - UINT64 EndTimeStamp; ///< End time point. - UINT32 Identifier; ///< Identifier. -} MEASUREMENT_RECORD; - -typedef struct { - CHAR8 *Name; ///< Measured token string name. - UINT64 CumulativeTime; ///< Accumulated Elapsed Time. - UINT64 MinTime; ///< Minimum Elapsed Time. - UINT64 MaxTime; ///< Maximum Elapsed Time. - UINT32 Count; ///< Number of measurements accu= mulated. -} PROFILE_RECORD; - -typedef struct { - UINT16 Token; - SHELL_PARAM_TYPE Type; -} PARAM_ITEM_LIST; -#endif // _EFI_APP_DP_H_ diff --git a/PerformancePkg/Dp_App/Dp.inf b/PerformancePkg/Dp_App/Dp.inf deleted file mode 100644 index 1204d8ef5b..0000000000 --- a/PerformancePkg/Dp_App/Dp.inf +++ /dev/null @@ -1,80 +0,0 @@ -## @file -# Display Performance Application, Module information file. -# -# Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BS= D License -# which accompanies this distribution. The full text of the license may b= e found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -# -## - -[Defines] - INF_VERSION =3D 0x00010006 - BASE_NAME =3D DP - FILE_GUID =3D 7d5ff0e3-2fb7-4e19-8419-44266cb60000 - MODULE_TYPE =3D UEFI_APPLICATION - VERSION_STRING =3D 1.0 - ENTRY_POINT =3D InitializeDp - =20 -# -# This flag specifies whether HII resource section is generated into PE i= mage. -# - UEFI_HII_RESOURCE_SECTION =3D TRUE - -# -# The following information is for reference only and not required by the = build tools. -# -# VALID_ARCHITECTURES =3D IA32 X64 IPF EBC -# - -[Sources] - DpStrings.uni - Dp.c - Dp.h - Literals.h - Literals.c - DpInternal.h - DpUtilities.c - DpTrace.c - DpProfile.c - -[Packages] - MdePkg/MdePkg.dec - MdeModulePkg/MdeModulePkg.dec - ShellPkg/ShellPkg.dec - PerformancePkg/PerformancePkg.dec - -[LibraryClasses] - UefiApplicationEntryPoint - ShellLib - BaseMemoryLib - BaseLib - MemoryAllocationLib - DebugLib - UefiBootServicesTableLib - PeCoffGetEntryPointLib - PerformanceLib - PrintLib - UefiLib - HiiLib - UefiHiiServicesLib - PcdLib - DevicePathLib - DxeServicesLib - -[Guids] - gPerformanceProtocolGuid ## CONSUMES ## S= ystemTable - -[Protocols] - gEfiLoadedImageProtocolGuid ## CONSUMES - gEfiHiiPackageListProtocolGuid ## CONSUMES - gEfiDriverBindingProtocolGuid ## SOMETIMES_CON= SUMES - gEfiComponentName2ProtocolGuid ## SOMETIMES_CON= SUMES - gEfiLoadedImageDevicePathProtocolGuid ## SOMETIMES_CON= SUMES - -[Pcd] - gEfiMdePkgTokenSpaceGuid.PcdUefiLibMaxPrintBufferSize ## CONSUMES diff --git a/PerformancePkg/Dp_App/DpInternal.h b/PerformancePkg/Dp_App/DpI= nternal.h deleted file mode 100644 index 1ab36ba7ed..0000000000 --- a/PerformancePkg/Dp_App/DpInternal.h +++ /dev/null @@ -1,383 +0,0 @@ -/** @file - Declarations of objects defined internally to the Dp Application. - - Declarations of data and functions which are private to the Dp applicati= on. - This file should never be referenced by anything other than components o= f the - Dp application. In addition to global data, function declarations for - DpUtilities.c, DpTrace.c, and DpProfile.c are included here. - - Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
- (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -**/ -#ifndef _DP_INTELNAL_H_ -#define _DP_INTELNAL_H_ - -#define DP_GAUGE_STRING_LENGTH 36 - -// -/// Module-Global Variables -///@{ -extern EFI_HII_HANDLE gHiiHandle; -extern CHAR16 *mPrintTokenBuffer; -extern CHAR16 mGaugeString[DP_GAUGE_STRING_LENGTH + 1]; -extern CHAR16 mUnicodeToken[DXE_PERFORMANCE_STRING_SIZE]; -extern UINT64 mInterestThreshold; -extern BOOLEAN mShowId; - -extern PERF_SUMMARY_DATA SummaryData; ///< Create the SummaryData stru= cture and init. to ZERO. - -/// Timer Specific Information. -extern TIMER_INFO TimerInfo; - -/// Items for which to gather cumulative statistics. -extern PERF_CUM_DATA CumData[]; - -/// Number of items for which we are gathering cumulative statistics. -extern UINT32 const NumCum; - -///@} - -/**=20 - Calculate an event's duration in timer ticks. - =20 - Given the count direction and the event's start and end timer values, - calculate the duration of the event in timer ticks. Information for - the current measurement is pointed to by the parameter. - =20 - If the measurement's start time is 1, it indicates that the developer - is indicating that the measurement began at the release of reset. - The start time is adjusted to the timer's starting count before performi= ng - the elapsed time calculation. - =20 - The calculated duration, in ticks, is the absolute difference between - the measurement's ending and starting counts. - =20 - @param Measurement Pointer to a MEASUREMENT_RECORD structure containing - data for the current measurement. - =20 - @return The 64-bit duration of the event. -**/ -UINT64 -GetDuration ( - IN OUT MEASUREMENT_RECORD *Measurement - ); - -/**=20 - Determine whether the Measurement record is for an EFI Phase. - =20 - The Token and Module members of the measurement record are checked. - Module must be empty and Token must be one of SEC, PEI, DXE, BDS, or SHE= LL. - =20 - @param[in] Measurement A pointer to the Measurement record to test. - =20 - @retval TRUE The measurement record is for an EFI Phase. - @retval FALSE The measurement record is NOT for an EFI Phase. -**/ -BOOLEAN -IsPhase( - IN MEASUREMENT_RECORD *Measurement - ); - -/**=20 - Get the file name portion of the Pdb File Name. - =20 - The portion of the Pdb File Name between the last backslash and - either a following period or the end of the string is converted - to Unicode and copied into UnicodeBuffer. The name is truncated, - if necessary, to ensure that UnicodeBuffer is not overrun. - =20 - @param[in] PdbFileName Pdb file name. - @param[out] UnicodeBuffer The resultant Unicode File Name. - =20 -**/ -VOID -GetShortPdbFileName ( - IN CHAR8 *PdbFileName, - OUT CHAR16 *UnicodeBuffer - ); - -/**=20 - Get a human readable name for an image handle. - The following methods will be tried orderly: - 1. Image PDB - 2. ComponentName2 protocol - 3. FFS UI section - 4. Image GUID - 5. Image DevicePath - 6. Unknown Driver Name - =20 - @param[in] Handle - =20 - @post The resulting Unicode name string is stored in the - mGaugeString global array. - =20 -**/ -VOID -GetNameFromHandle ( - IN EFI_HANDLE Handle - ); - -/**=20 - Calculate the Duration in microseconds. - =20 - Duration is multiplied by 1000, instead of Frequency being divided by 10= 00 or - multiplying the result by 1000, in order to maintain precision. Since D= uration is - a 64-bit value, multiplying it by 1000 is unlikely to produce an overflo= w. - =20 - The time is calculated as (Duration * 1000) / Timer_Frequency. - =20 - @param[in] Duration The event duration in timer ticks. - =20 - @return A 64-bit value which is the Elapsed time in microseconds. -**/ -UINT64 -DurationInMicroSeconds ( - IN UINT64 Duration - ); - -/**=20 - Formatted Print using a Hii Token to reference the localized format stri= ng. - =20 - @param[in] Token A HII token associated with a localized Unicode stri= ng. - @param[in] ... The variable argument list. - =20 - @return The number of characters converted by UnicodeVSPrint= (). - =20 -**/ -UINTN -EFIAPI -PrintToken ( - IN UINT16 Token, - ... - ); - -/**=20 - Get index of Measurement Record's match in the CumData array. - =20 - If the Measurement's Token value matches a Token in one of the CumData - records, the index of the matching record is returned. The returned - index is a signed value so that negative values can indicate that - the Measurement didn't match any entry in the CumData array. - =20 - @param[in] Measurement A pointer to a Measurement Record to match again= st the CumData array. - =20 - @retval <0 Token is not in the CumData array. - @retval >=3D0 Return value is the index into CumData where Token i= s found. -**/ -INTN -GetCumulativeItem( - IN MEASUREMENT_RECORD *Measurement - ); - -/**=20 - Collect verbose statistics about the logged performance measurements. - =20 - General Summary information for all Trace measurements is gathered and - stored within the SummaryData structure. This information is both - used internally by subsequent reporting functions, and displayed - at the end of verbose reports. - =20 - @pre The SummaryData and CumData structures must be initialized - prior to calling this function. - =20 - @post The SummaryData and CumData structures contain statistics for the - current performance logs. - - @param[in, out] CustomCumulativeData The pointer to the custom cumulati= ve data. - -**/ -VOID -GatherStatistics( - IN OUT PERF_CUM_DATA *CustomCumulativeData OPTIONAL - ); - -/**=20 - Gather and print ALL Trace Records. - =20 - Displays all "interesting" Trace measurements in order.
- The number of records displayed is controlled by: - - records with a duration less than mInterestThreshold microseconds a= re not displayed. - - No more than Limit records are displayed. A Limit of zero will not= limit the output. - - If the ExcludeFlag is TRUE, records matching entries in the CumData= array are not - displayed. - =20 - @pre The mInterestThreshold global variable is set to the shortest du= ration to be printed. - The mGaugeString and mUnicodeToken global arrays are used for t= emporary string storage. - They must not be in use by a calling function. - =20 - @param[in] Limit The number of records to print. Zero is ALL. - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items fr= om display. - =20 - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. - @return Others from a call to gBS->LocateHandleBuffer(). -**/ -EFI_STATUS -DumpAllTrace( - IN UINTN Limit, - IN BOOLEAN ExcludeFlag - ); - -/**=20 - Gather and print Raw Trace Records. - =20 - All Trace measurements with a duration greater than or equal to - mInterestThreshold are printed without interpretation. - =20 - The number of records displayed is controlled by: - - records with a duration less than mInterestThreshold microseconds a= re not displayed. - - No more than Limit records are displayed. A Limit of zero will not= limit the output. - - If the ExcludeFlag is TRUE, records matching entries in the CumData= array are not - displayed. - =20 - @pre The mInterestThreshold global variable is set to the shortest du= ration to be printed. - =20 - @param[in] Limit The number of records to print. Zero is ALL. - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items fr= om display. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. -**/ -EFI_STATUS -DumpRawTrace( - IN UINTN Limit, - IN BOOLEAN ExcludeFlag - ); - -/**=20 - Gather and print Major Phase metrics. - =20 -**/ -VOID -ProcessPhases( - VOID - ); - - -/**=20 - Gather and print Handle data. - =20 - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items = from display. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. - @return Others from a call to gBS->LocateHandleBuffer(). -**/ -EFI_STATUS -ProcessHandles( - IN BOOLEAN ExcludeFlag - ); - - -/**=20 - Gather and print PEIM data. - =20 - Only prints complete PEIM records - =20 - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. -**/ -EFI_STATUS -ProcessPeims( - VOID - ); - -/**=20 - Gather and print global data. - =20 - Strips out incomplete or "Execution Phase" records - Only prints records where Handle is NULL - Increment TIndex for every record, even skipped ones, so that we have an - indication of every measurement record taken. - =20 - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. -**/ -EFI_STATUS -ProcessGlobal( - VOID - ); - -/**=20 - Gather and print cumulative data. - =20 - Traverse the measurement records and:
- For each record with a Token listed in the CumData array:
- - Update the instance count and the total, minimum, and maximum durat= ions. - Finally, print the gathered cumulative statistics. - - @param[in] CustomCumulativeData The pointer to the custom cumulative= data. - =20 -**/ -VOID -ProcessCumulative( - IN PERF_CUM_DATA *CustomCumulativeData OPTIONAL - ); - -/**=20 - Gather and print ALL Profiling Records. - =20 - Displays all "interesting" Profile measurements in order. - The number of records displayed is controlled by: - - records with a duration less than mInterestThreshold microseconds a= re not displayed. - - No more than Limit records are displayed. A Limit of zero will not= limit the output. - - If the ExcludeFlag is TRUE, records matching entries in the CumData= array are not - displayed. - =20 - @pre The mInterestThreshold global variable is set to the shortest du= ration to be printed. - The mGaugeString and mUnicodeToken global arrays are used for t= emporary string storage. - They must not be in use by a calling function. - =20 - @param[in] Limit The number of records to print. Zero is ALL. - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items = from display. - =20 -**/ -VOID -DumpAllProfile( - IN UINTN Limit, - IN BOOLEAN ExcludeFlag - ); - -/**=20 - Gather and print Raw Profile Records. - =20 - All Profile measurements with a duration greater than or equal to - mInterestThreshold are printed without interpretation. - =20 - The number of records displayed is controlled by: - - records with a duration less than mInterestThreshold microseconds a= re not displayed. - - No more than Limit records are displayed. A Limit of zero will not= limit the output. - - If the ExcludeFlag is TRUE, records matching entries in the CumData= array are not - displayed. - =20 - @pre The mInterestThreshold global variable is set to the shortest du= ration to be printed. - =20 - @param[in] Limit The number of records to print. Zero is ALL. - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items = from display. - =20 -**/ -VOID -DumpRawProfile( - IN UINTN Limit, - IN BOOLEAN ExcludeFlag - ); - -/** - Wrap original FreePool to check NULL pointer first. - - @param[in] Buffer The pointer to the buffer to free. - -**/ -VOID -SafeFreePool ( - IN VOID *Buffer - ); - -#endif diff --git a/PerformancePkg/Dp_App/DpProfile.c b/PerformancePkg/Dp_App/DpPr= ofile.c deleted file mode 100644 index 15c2ef14d4..0000000000 --- a/PerformancePkg/Dp_App/DpProfile.c +++ /dev/null @@ -1,102 +0,0 @@ -/** @file - Measured Profiling reporting for the Dp utility. - - Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -**/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "Dp.h" -#include "Literals.h" -#include "DpInternal.h" - -/**=20 - Gather and print ALL Profiling Records. - =20 - Displays all "interesting" Profile measurements in order. - The number of records displayed is controlled by: - - records with a duration less than mInterestThreshold microseconds a= re not displayed. - - No more than Limit records are displayed. A Limit of zero will not= limit the output. - - If the ExcludeFlag is TRUE, records matching entries in the CumData= array are not - displayed. - =20 - @pre The mInterestThreshold global variable is set to the shortest du= ration to be printed. - The mGaugeString and mUnicodeToken global arrays are used for t= emporary string storage. - They must not be in use by a calling function. - =20 - @param[in] Limit The number of records to print. Zero is ALL. - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items = from display. - =20 -**/ -VOID -DumpAllProfile( - IN UINTN Limit, - IN BOOLEAN ExcludeFlag - ) -{ - EFI_STRING StringPtr; - EFI_STRING StringPtrUnknown; - - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECTION_PRO= FILE), NULL); - - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (StringPtr =3D=3D NULL) ? StringPtrUnknown: StringPtr); - FreePool (StringPtr); - FreePool (StringPtrUnknown); - return; -} - -/**=20 - Gather and print Raw Profile Records. - =20 - All Profile measurements with a duration greater than or equal to - mInterestThreshold are printed without interpretation. - =20 - The number of records displayed is controlled by: - - records with a duration less than mInterestThreshold microseconds a= re not displayed. - - No more than Limit records are displayed. A Limit of zero will not= limit the output. - - If the ExcludeFlag is TRUE, records matching entries in the CumData= array are not - displayed. - =20 - @pre The mInterestThreshold global variable is set to the shortest du= ration to be printed. - =20 - @param[in] Limit The number of records to print. Zero is ALL. - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items = from display. - =20 -**/ -VOID -DumpRawProfile( - IN UINTN Limit, - IN BOOLEAN ExcludeFlag - ) -{ - EFI_STRING StringPtr; - EFI_STRING StringPtrUnknown; - - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECTION_RAW= PROFILE), NULL); - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (StringPtr =3D=3D NULL) ? StringPtrUnknown: StringPtr); - FreePool (StringPtr); - FreePool (StringPtrUnknown); - return; -} diff --git a/PerformancePkg/Dp_App/DpStrings.uni b/PerformancePkg/Dp_App/Dp= Strings.uni deleted file mode 100644 index 131d16bb6d..0000000000 --- a/PerformancePkg/Dp_App/DpStrings.uni +++ /dev/null @@ -1,281 +0,0 @@ -// *++ -// -// Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-// (C) Copyright 2015 Hewlett Packard Enterprise Development LP
-// This program and the accompanying materials -// are licensed and made available under the terms and conditions of the B= SD License -// which accompanies this distribution. The full text of the license may = be found at -// http://opensource.org/licenses/bsd-license.php -// -// THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -// WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. -// -// -// Module Name: -// -// DpStrings.uni -// -// Abstract: -// -// String definitions for the Shell dp command -// -// Revision History: -// -// --*/ - -/=3D# - -#langdef en-US "English" -#langdef fr-FR "Fran=C3=A7ais" - -#string STR_DP_HELP_INFORMATION #language en-US "" - ".TH DP 0 "Display= Performance metrics."\r\n" - ".SH NAME\r\n" - "Display Performan= ce metrics.\r\n" - ".SH SYNOPSIS\r\n" - " \r\n" - "If Profiling is i= mplemented:\r\n" - "dp [-b] [-v] [-x]= [-s | -A | -R] [-T] [-P] [-t value] [-n count] [-c [token]] [-i] [-?]\r\n" - "If Profiling is n= ot implemented:\r\n" - "dp [-b] [-v] [-x]= [-s | -A | -R] [-t value] [-n count] [-c [token]] [-i] [-?]\r\n" - ".SH OPTIONS\r\n" - " \r\n" - " -b display on= multiple pages\n\r\n" - " -v display ad= ditional information\r\n" - " -x prevent di= splay of individual measurements for cumulative items\r\n" - " -s display su= mmary information only\r\n" - " -A display al= l measurements in a list\r\n" - " -R display al= l measurements in raw format\r\n" - " -T display Tr= ace measurements only(This option is available when Profiling is implemente= d)\r\n" - " -P display Pr= ofile measurements only(This option is available when Profiling is implemen= ted)\r\n" - " -t VALUE Set = display threshold to VALUE microseconds\r\n" - " -n COUNT Limi= t display to COUNT lines in All and Raw modes\r\n" - " -i display id= entifier\r\n" - " -c TOKEN - Dis= play pre-defined and custom cumulative data\r\n" - " Pre= -defined cumulative token are:\r\n" - " 1. = LoadImage:\r\n" - " 2. = StartImage:\r\n" - " 3. = DB:Start:\r\n" - " 4. = DB:Support:\r\n" - " -? display dp= help information\r\n" - "\r\n" - #language fr-FR "" - ".TH DP 0 "Montrer= les donn=C3=A9es d'ex=C3=A9cution"\r\n" - ".SH NAME\r\n" - "Montrer les donn= =C3=A9es d'ex=C3=A9cution\r\n" - ".SH SYNOPSIS\r\n" - " \r\n" - "If Profiling is i= mplemented:\r\n" - "dp [-b] [-v] [-x]= [-s | -A | -R] [-T] [-P] [-t value] [-n count] [-c [token]] [-i] [-?]\r\n" - "If Profiling is n= ot implemented:\r\n" - "dp [-b] [-v] [-x]= [-s | -A | -R] [-t value] [-n count] [-c [token]] [-i] [-?]\r\n" - ".SH OPTIONS\r\n" - " \r\n" - " -b montrer su= r les pages multiples\r\n" - " -v display ad= ditional information\r\n" - " -x prevent di= splay of individual measurements for cumulative items\r\n" - " -s montrer le= s donn=C3=A9es de statistique seulement\r\n" - " -A\r\n" - " -R\r\n" - " -T\r\n" - " -P\r\n" - " -t VALUE\r\n" - " -n COUNT\r\n" - " -i\r\n" - " -c\r\n" - " -? montrer dp= aider l'information\r\n" - "\r\n" - -#string STR_DP_HELP_HEAD #language en-US "\nDisplay Perform= ance metrics\n" - #language fr-FR "\nMontrer les don= n=C3=A9es d'ex=C3=A9cution\n" -#string STR_DP_HELP_FLAGS #language en-US "dp [-b] [-v] [-x]= [-s | -A | -R] [-T] [-P] [-t value] [-n count] [-c [token]] [-i] [-?]\n" - #language fr-FR "dp [-b] [-v] [-x]= [-s | -A | -R] [-T] [-P] [-t value] [-n count] [-c [token]] [-i] [-?]\n" -#string STR_DP_HELP_FLAGS_2 #language en-US "dp [-b] [-v] [-x]= [-s | -A | -R] [-t value] [-n count] [-c [token]] [-i] [-?]\n" - #language fr-FR "dp [-b] [-v] [-x]= [-s | -A | -R] [-t value] [-n count] [-c [token]] [-i] [-?]\n" -#string STR_DP_HELP_PAGINATE #language en-US " -b display on= multiple pages\n" - #language fr-FR " -b montrer su= r les pages multiples\n" -#string STR_DP_HELP_VERBOSE #language en-US " -v display ad= ditional information\n" - #language fr-FR " -v display ad= ditional information\n" -#string STR_DP_HELP_EXCLUDE #language en-US " -x prevent di= splay of individual measurements for cumulative items.\n" - #language fr-FR " -x prevent di= splay of individual measurements for cumulative items.\n" -#string STR_DP_HELP_STAT #language en-US " -s display su= mmary information only\n" - #language fr-FR " -s montrer le= s donn=C3=A9es de statistique seulement\n" -#string STR_DP_HELP_ALL #language en-US " -A display al= l measurements in a list\n" - #language fr-FR " -A\n" -#string STR_DP_HELP_RAW #language en-US " -R display al= l measurements in raw format\n" - #language fr-FR " -R\n" -#string STR_DP_HELP_TRACE #language en-US " -T display Tr= ace measurements only\n" - #language fr-FR " -T\n" -#string STR_DP_HELP_PROFILE #language en-US " -P display Pr= ofile measurements only\n" - #language fr-FR " -P\n" -#string STR_DP_HELP_THRESHOLD #language en-US " -t VALUE Set = display threshold to VALUE microseconds\n" - #language fr-FR " -t VALUE\n" -#string STR_DP_HELP_COUNT #language en-US " -n COUNT Limi= t display to COUNT lines in All and Raw modes\n" - #language fr-FR " -n COUNT\n" -#string STR_DP_HELP_ID #language en-US " -i display id= entifier\n" - #language fr-FR " -i\n" -#string STR_DP_HELP_CUM_DATA #language en-US " -c TOKEN - Dis= play pre-defined and custom cumulative data\r\n" - " Pre= -defined cumulative token are:\r\n" - " 1. = LoadImage:\r\n" - " 2. = StartImage:\r\n" - " 3. = DB:Start:\r\n" - " 4. = DB:Support:\r\n" - #language fr-FR " -c\n" -#string STR_DP_HELP_HELP #language en-US " -? display dp= help information\n" - #language fr-FR " -? montrer dp= aider l'information\n" -#string STR_DP_UP #language en-US "UP" - #language fr-FR "UP" -#string STR_DP_DOWN #language en-US "DOWN" - #language fr-FR "DOWN" -#string STR_DP_DASHES #language en-US "-----------------= --------------------------------------------------------------\n" - #language fr-FR "-----------------= --------------------------------------------------------------\n" -#string STR_DP_SECTION_HEADER #language en-US "\n=3D=3D[ %s ]=3D= =3D=3D=3D=3D=3D=3D=3D\n" - #language fr-FR "\n=3D=3D[ %s ]=3D= =3D=3D=3D=3D=3D=3D=3D\n" -#string STR_DP_INVALID_ARG #language en-US "Invalid argument(= s)\n" - #language fr-FR "Argument d'invali= de(s)\n" -#string STR_DP_HANDLES_ERROR #language en-US "Locate All Handle= s error - %r\n" - #language fr-FR "Localiser Toute e= rreur de Poign=C3=A9es - %r\n" -#string STR_DP_ERROR_NAME #language en-US "Unknown Driver Na= me" - #language fr-FR "Unknown Driver Na= me" -#string STR_PERF_PROPERTY_NOT_FOUND #language en-US "Performance prope= rty not found\n" - #language fr-FR "Performance prope= rty not found\n" -#string STR_DP_BUILD_REVISION #language en-US "\nDP Build Versio= n: %d.%d\n" - #language fr-FR "\nDP Construit la= Version: %d,%d\n" -#string STR_DP_KHZ #language en-US "System Performanc= e Timer Frequency: %,8d (KHz)\n" - #language fr-FR "System Performanc= e Timer Frequency: %,8d (KHz)\n" -#string STR_DP_TIMER_PROPERTIES #language en-US "System Performanc= e Timer counts %s from 0x%Lx to 0x%Lx\n" - #language fr-FR "System Performanc= e Timer counts %s from 0x%Lx to 0x%Lx\n" -#string STR_DP_VERBOSE_THRESHOLD #language en-US "Measurements less= than %,Ld microseconds are not displayed.\n" - #language fr-FR "Measurements less= than %,Ld microseconds are not displayed.\n" -#string STR_DP_SECTION_PHASES #language en-US "Major Phases" - #language fr-FR "Major Phases" -#string STR_DP_SEC_PHASE #language en-US " SEC Phase Durat= ion: %L8d (us)\n" - #language fr-FR " SEC Phase Durat= ion: %L8d (us)\n" -#string STR_DP_PHASE_BDSTO #language en-US " BDS Time= out: %L8d (ms) included in BDS Duration\n" - #language fr-FR " BDS Time= out: %L8d (ms) included in BDS Duration\n" -#string STR_DP_PHASE_DURATION #language en-US "%5a Phase Duratio= n: %L8d (ms)\n" - #language fr-FR "%5a Phase Duratio= n: %L8d (ms)\n" -#string STR_DP_TOTAL_DURATION #language en-US "Total Durat= ion: %L8d (ms)\n" - #language fr-FR "Total Durat= ion: %L8d (ms)\n" -#string STR_DP_SECTION_DRIVERS #language en-US "Drivers by Handle" - #language fr-FR "Drivers by Handle" -#string STR_DP_HANDLE_SECTION #language en-US "Index: Handle = Driver Name Description Time(us)\n" - #language fr-FR "Index: Poign=C3= =A9e Nom(GUID) Description Temps(us)\n" -#string STR_DP_HANDLE_VARS #language en-US "%5d: [%3x] %36= s %11s %L8d\n" - #language fr-FR "%5d: [%3x] %36= s %11s %L8d\n" -#string STR_DP_HANDLE_SECTION2 #language en-US "Index: Handle = Driver Name Description Time(us) ID\n" - #language fr-FR "Index: Poign=C3= =A9e Nom(GUID) Description Temps(us) ID\n" -#string STR_DP_HANDLE_VARS2 #language en-US "%5d: [%3x] %36s = %11s %L8d %5d\n" - #language fr-FR "%5d: [%3x] %36s = %11s %L8d %5d\n" -#string STR_DP_SECTION_PEIMS #language en-US "PEIMs" - #language fr-FR "PEIMs" -#string STR_DP_PEIM_SECTION #language en-US "Index: Pointer V= alue Instance GUID Token Time(us)\n" - #language fr-FR "Index: Pointer V= alue Instance GUID Token Temps(us)\n" -#string STR_DP_PEIM_VARS #language en-US "%5d: 0x%11p %g= PEIM %L8d\n" - #language fr-FR "%5d: 0x%11p %g= PEIM %L8d\n" -#string STR_DP_PEIM_SECTION2 #language en-US "Index: Pointer Va= lue Instance GUID Token Time(us) ID\n" - #language fr-FR "Index: Pointer Va= lue Instance GUID Token Temps(us) ID\n" -#string STR_DP_PEIM_VARS2 #language en-US "%5d: 0x%11p %g P= EIM %L8d %5d\n" - #language fr-FR "%5d: 0x%11p %g P= EIM %L8d %5d\n" -#string STR_DP_SECTION_GENERAL #language en-US "General" - #language fr-FR "General" -#string STR_DP_GLOBAL_SECTION #language en-US "Index = Name Description Time(us)\n" - #language fr-FR "Index = Nom Description Temps(us)\n" -#string STR_DP_GLOBAL_VARS #language en-US "%5d:%25s %31s= %L8d\n" - #language fr-FR "%5d:%25s %31s= %L8d\n" -#string STR_DP_GLOBAL_SECTION2 #language en-US "Index = Name Description Time(us) ID\n" - #language fr-FR "Index = Nom Description Temps(us) ID\n" -#string STR_DP_GLOBAL_VARS2 #language en-US "%5d:%25s %31s %L= 8d %5d\n" - #language fr-FR "%5d:%25s %31s %L= 8d %5d\n" -#string STR_DP_SECTION_CUMULATIVE #language en-US "Cumulative" - #language fr-FR "Cumulative" -#string STR_DP_CUMULATIVE_SECT_1 #language en-US "(Times in microse= c.) Cumulative Average Shortest Longest\n" - #language fr-FR "(Times in microse= c.) Cumulative Average Shortest Longest\n" -#string STR_DP_CUMULATIVE_SECT_2 #language en-US " Name C= ount Duration Duration Duration Duration\n" - #language fr-FR " Name C= ount Duration Duration Duration Duration\n" -#string STR_DP_CUMULATIVE_STATS #language en-US "%11a %8d %L10d= %L10d %L10d %L10d\n" - #language fr-FR "%11a %8d %L10d= %L10d %L10d %L10d\n" -#string STR_DP_SECTION_STATISTICS #language en-US "Statistics" - #language fr-FR "Statistics" -#string STR_DP_STATS_NUMTRACE #language en-US "There were %d mea= surements taken, of which:\n" - #language fr-FR "There were %d mea= surements taken, of which:\n" -#string STR_DP_STATS_NUMINCOMPLETE #language en-US "%,8d are incomple= te.\n" - #language fr-FR "%,8d are incomple= te.\n" -#string STR_DP_STATS_NUMPHASES #language en-US "%,8d are major ex= ecution phases.\n" - #language fr-FR "%,8d are major ex= ecution phases.\n" -#string STR_DP_STATS_NUMHANDLES #language en-US "%,8d have non-NUL= L handles, %d are NULL.\n" - #language fr-FR "%,8d have non-NUL= L handles, %d are NULL.\n" -#string STR_DP_STATS_NUMPEIMS #language en-US "%,8d are PEIMs.\n" - #language fr-FR "%,8d are PEIMs.\n" -#string STR_DP_STATS_NUMGLOBALS #language en-US "%,8d are general = measurements.\n" - #language fr-FR "%,8d are general = measurements.\n" -#string STR_DP_STATS_NUMPROFILE #language en-US "%,8d are profilin= g records.\n" - #language fr-FR "%,8d are profilin= g records.\n" -#string STR_DP_SECTION_PROFILE #language en-US "Sequential Profil= e Records" - #language fr-FR "Sequential Profil= e Records" -#string STR_DP_SECTION_ALL #language en-US "Sequential Trace = Records" - #language fr-FR "Sequential Trace = Records" -#string STR_DP_ALL_HEADR #language en-US "\nIndex Hand= le Module Token Time(us)\n" - #language fr-FR "\nIndex Hand= le Module Token Temps(us)\n" -#string STR_DP_ALL_VARS #language en-US "%5d:%3s0x%08p %36= s %13s %L8d\n" - #language fr-FR "%5d:%3s0x%08p %36= s %13s %L8d\n" -#string STR_DP_ALL_DASHES2 #language en-US "-----------------= --------------------------------------------------------------------\n" - #language fr-FR "-----------------= --------------------------------------------------------------------\n" -#string STR_DP_ALL_HEADR2 #language en-US "\nIndex Hand= le Module Token Time(us) ID\n" - #language fr-FR "\nIndex Hand= le Module Token Temps(us) ID\n" -#string STR_DP_ALL_VARS2 #language en-US "%5d:%3s0x%08p %36= s %13s %L8d %5d\n" - #language fr-FR "%5d:%3s0x%08p %36= s %13s %L8d %5d\n" -#string STR_DP_SECTION_RAWTRACE #language en-US "RAW Trace" - #language fr-FR "RAW Trace" -#string STR_DP_SECTION_RAWPROFILE #language en-US "RAW Profile" - #language fr-FR "RAW Profile" -#string STR_DP_RAW_DASHES #language en-US "-----------------= ---------------------------------------------------------------------------= -------------------------------\n" - #language fr-FR "-----------------= ---------------------------------------------------------------------------= -------------------------------\n" -#string STR_DP_RAW_VARS #language en-US "%5d: %16LX %16LX = %16LX %31a %31a\n" - #language fr-FR "%5d: %16LX %16LX = %16LX %31a %31a\n" -#string STR_DP_RAW_HEADR #language en-US "\nIndex Han= dle Start Count End Count Token = Module\n" - #language fr-FR "\nIndex Han= dle Start Count End Count Token = Module\n" -#string STR_DP_RAW_DASHES2 #language en-US "-----------------= ---------------------------------------------------------------------------= -------------------------------------\n" - #language fr-FR "-----------------= ---------------------------------------------------------------------------= -------------------------------------\n" -#string STR_DP_RAW_VARS2 #language en-US "%5d: %16LX %16LX = %16LX %31a %31a %5d\n" - #language fr-FR "%5d: %16LX %16LX = %16LX %31a %31a %5d\n" -#string STR_DP_RAW_HEADR2 #language en-US "\nIndex Han= dle Start Count End Count Token = Module ID\n" - #language fr-FR "\nIndex Han= dle Start Count End Count Token = Module ID\n" -#string STR_DP_OPTION_UA #language en-US "-A" - #language fr-FR "-A" -#string STR_DP_OPTION_LA #language en-US "-a" - #language fr-FR "-a" -#string STR_DP_OPTION_LN #language en-US "-n" - #language fr-FR "-n" -#string STR_DP_OPTION_LT #language en-US "-t" - #language fr-FR "-t" -#string STR_DP_OPTION_UP #language en-US "-P" - #language fr-FR "-P" -#string STR_DP_OPTION_UR #language en-US "-R" - #language fr-FR "-R" -#string STR_DP_OPTION_LS #language en-US "-s" - #language fr-FR "-s" -#string STR_DP_OPTION_US #language en-US "-S" - #language fr-FR "-S" -#string STR_DP_OPTION_UT #language en-US "-T" - #language fr-FR "-T" -#string STR_DP_OPTION_LV #language en-US "-v" - #language fr-FR "-v" -#string STR_DP_OPTION_QH #language en-US "-?" - #language fr-FR "-?" -#string STR_DP_OPTION_LH #language en-US "-h" - #language fr-FR "-h" -#string STR_DP_OPTION_UH #language en-US "-H" - #language fr-FR "-H" -#string STR_DP_OPTION_LX #language en-US "-x" - #language fr-FR "-x" -#string STR_DP_OPTION_LI #language en-US "-i" - #language fr-FR "-i" -#string STR_DP_OPTION_LC #language en-US "-c" - #language fr-FR "-c" -#string STR_DP_INCOMPLETE #language en-US " I " - #language fr-FR " I " -#string STR_DP_COMPLETE #language en-US " " - #language fr-FR " " -#string STR_ALIT_UNKNOWN #language en-US "Unknown" - #language fr-FR "Unknown" \ No newline at end of file diff --git a/PerformancePkg/Dp_App/DpTrace.c b/PerformancePkg/Dp_App/DpTrac= e.c deleted file mode 100644 index 9b4e0ed289..0000000000 --- a/PerformancePkg/Dp_App/DpTrace.c +++ /dev/null @@ -1,879 +0,0 @@ -/** @file - Trace reporting for the Dp utility. - - Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
- (C) Copyright 2015-2016 Hewlett Packard Enterprise Development LP
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -**/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "Dp.h" -#include "Literals.h" -#include "DpInternal.h" - -/**=20 - Collect verbose statistics about the logged performance measurements. - =20 - General Summary information for all Trace measurements is gathered and - stored within the SummaryData structure. This information is both - used internally by subsequent reporting functions, and displayed - at the end of verbose reports. - =20 - @pre The SummaryData and CumData structures must be initialized - prior to calling this function. - =20 - @post The SummaryData and CumData structures contain statistics for the - current performance logs. - - @param[in, out] CustomCumulativeData A pointer to the cumtom cumulative= data. - -**/ -VOID -GatherStatistics( - IN OUT PERF_CUM_DATA *CustomCumulativeData OPTIONAL - ) -{ - MEASUREMENT_RECORD Measurement; - UINT64 Duration; - UINTN LogEntryKey; - INTN TIndex; - - LogEntryKey =3D 0; - while ((LogEntryKey =3D GetPerformanceMeasurementEx ( - LogEntryKey, - &Measurement.Handle, - &Measurement.Token, - &Measurement.Module, - &Measurement.StartTimeStamp, - &Measurement.EndTimeStamp, - &Measurement.Identifier)) !=3D 0) - { - ++SummaryData.NumTrace; // Count the number of TRACE Measure= ment records - if (Measurement.EndTimeStamp =3D=3D 0) { - ++SummaryData.NumIncomplete; // Count the incomplete records - continue; - } - - if (Measurement.Handle !=3D NULL) { - ++SummaryData.NumHandles; // Count the number of measurements = with non-NULL handles - } - - if (IsPhase( &Measurement)) { - ++SummaryData.NumSummary; // Count the number of major phases - } - else { // !IsPhase(... - if(Measurement.Handle =3D=3D NULL) { - ++SummaryData.NumGlobal; - } - } - - if (AsciiStrnCmp (Measurement.Token, ALit_PEIM, PERF_TOKEN_LENGTH) =3D= =3D 0) { - ++SummaryData.NumPEIMs; // Count PEIM measurements - } - - Duration =3D GetDuration (&Measurement); - TIndex =3D GetCumulativeItem (&Measurement); - if (TIndex >=3D 0) { - CumData[TIndex].Duration +=3D Duration; - CumData[TIndex].Count++; - if ( Duration < CumData[TIndex].MinDur ) { - CumData[TIndex].MinDur =3D Duration; - } - if ( Duration > CumData[TIndex].MaxDur ) { - CumData[TIndex].MaxDur =3D Duration; - } - } - - // - // Collect the data for custom cumulative data. - // - if ((CustomCumulativeData !=3D NULL) && (AsciiStrCmp (Measurement.Toke= n, CustomCumulativeData->Name) =3D=3D 0)) { - CustomCumulativeData->Duration +=3D Duration; - CustomCumulativeData->Count++; - if (Duration < CustomCumulativeData->MinDur) { - CustomCumulativeData->MinDur =3D Duration; - } - if (Duration > CustomCumulativeData->MaxDur) { - CustomCumulativeData->MaxDur =3D Duration; - } - } - } -} - -/**=20 - Gather and print ALL Trace Records. - =20 - Displays all "interesting" Trace measurements in order.
- The number of records displayed is controlled by: - - records with a duration less than mInterestThreshold microseconds a= re not displayed. - - No more than Limit records are displayed. A Limit of zero will not= limit the output. - - If the ExcludeFlag is TRUE, records matching entries in the CumData= array are not - displayed. - =20 - @pre The mInterestThreshold global variable is set to the shortest du= ration to be printed. - The mGaugeString and mUnicodeToken global arrays are used for t= emporary string storage. - They must not be in use by a calling function. - =20 - @param[in] Limit The number of records to print. Zero is ALL. - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items fr= om display. - =20 - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. - @return Others from a call to gBS->LocateHandleBuffer(). -**/ -EFI_STATUS -DumpAllTrace( - IN UINTN Limit, - IN BOOLEAN ExcludeFlag - ) -{ - MEASUREMENT_RECORD Measurement; - UINT64 ElapsedTime; - UINT64 Duration; - const CHAR16 *IncFlag; - UINTN LogEntryKey; - UINTN Count; - UINTN Index; - UINTN TIndex; - - EFI_HANDLE *HandleBuffer; - UINTN HandleCount; - EFI_STATUS Status; - EFI_STRING StringPtrUnknown; - - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - IncFlag =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECTION_ALL),= NULL); - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (IncFlag =3D=3D NULL) ? StringPtrUnknown : IncFlag); - FreePool (StringPtrUnknown); - - // Get Handle information - // - Status =3D gBS->LocateHandleBuffer (AllHandles, NULL, NULL, &HandleCoun= t, &HandleBuffer); - if (EFI_ERROR (Status)) { - PrintToken (STRING_TOKEN (STR_DP_HANDLES_ERROR), Status); - } - else { - // We have successfully populated the HandleBuffer - // Display ALL Measurement Records - // Up to Limit lines displayed - // Display only records with Elapsed times >=3D mInterestThreshold - // Display driver names in Module field for records with Handles. - // - if (mShowId) { - PrintToken (STRING_TOKEN (STR_DP_ALL_HEADR2) ); - PrintToken (STRING_TOKEN (STR_DP_ALL_DASHES2) ); - } else { - PrintToken (STRING_TOKEN (STR_DP_ALL_HEADR) ); - PrintToken (STRING_TOKEN (STR_DP_DASHES) ); - } - - LogEntryKey =3D 0; - Count =3D 0; - Index =3D 0; - while ( WITHIN_LIMIT(Count, Limit) && - ((LogEntryKey =3D GetPerformanceMeasurementEx ( - LogEntryKey, - &Measurement.Handle, - &Measurement.Token, - &Measurement.Module, - &Measurement.StartTimeStamp, - &Measurement.EndTimeStamp, - &Measurement.Identifier)) !=3D 0) - ) - { - ++Index; // Count every record. First record is 1. - ElapsedTime =3D 0; - SafeFreePool ((VOID *) IncFlag); - if (Measurement.EndTimeStamp !=3D 0) { - Duration =3D GetDuration (&Measurement); - ElapsedTime =3D DurationInMicroSeconds ( Duration ); - IncFlag =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_COMPLET= E), NULL); - } - else { - IncFlag =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_INCOMPL= ETE), NULL); // Mark incomplete records - } - if (((Measurement.EndTimeStamp !=3D 0) && (ElapsedTime < mInterestTh= reshold)) || - ((ExcludeFlag) && (GetCumulativeItem(&Measurement) >=3D 0)) - ) { // Ignore "uninteresting" or excluded records - continue; - } - ++Count; // Count the number of records printed - - // If Handle is non-zero, see if we can determine a name for the dri= ver - AsciiStrToUnicodeStrS (Measurement.Module, mGaugeString, ARRAY_SIZE = (mGaugeString)); // Use Module by default - AsciiStrToUnicodeStrS (Measurement.Token, mUnicodeToken, ARRAY_SIZE = (mUnicodeToken)); - if (Measurement.Handle !=3D NULL) { - // See if the Handle is in the HandleBuffer - for (TIndex =3D 0; TIndex < HandleCount; TIndex++) { - if (Measurement.Handle =3D=3D HandleBuffer[TIndex]) { - GetNameFromHandle (HandleBuffer[TIndex]); - break; - } - } - } - - if (AsciiStrnCmp (Measurement.Token, ALit_PEIM, PERF_TOKEN_LENGTH) = =3D=3D 0) { - UnicodeSPrint (mGaugeString, sizeof (mGaugeString), L"%g", Measure= ment.Handle); - } - - // Ensure that the argument strings are not too long. - mGaugeString[DP_GAUGE_STRING_LENGTH] =3D 0; - mUnicodeToken[13] =3D 0; - - if (mShowId) { - PrintToken( STRING_TOKEN (STR_DP_ALL_VARS2), - Index, // 1 based, Which measurement record is being printed - IncFlag, - Measurement.Handle, - mGaugeString, - mUnicodeToken, - ElapsedTime, - Measurement.Identifier - ); - } else { - PrintToken( STRING_TOKEN (STR_DP_ALL_VARS), - Index, // 1 based, Which measurement record is being printed - IncFlag, - Measurement.Handle, - mGaugeString, - mUnicodeToken, - ElapsedTime - ); - } - if (ShellGetExecutionBreakFlag ()) { - Status =3D EFI_ABORTED; - break; - } - } - } - if (HandleBuffer !=3D NULL) { - FreePool (HandleBuffer); - } - SafeFreePool ((VOID *) IncFlag); - return Status; -} - -/**=20 - Gather and print Raw Trace Records. - =20 - All Trace measurements with a duration greater than or equal to - mInterestThreshold are printed without interpretation. - =20 - The number of records displayed is controlled by: - - records with a duration less than mInterestThreshold microseconds a= re not displayed. - - No more than Limit records are displayed. A Limit of zero will not= limit the output. - - If the ExcludeFlag is TRUE, records matching entries in the CumData= array are not - displayed. - =20 - @pre The mInterestThreshold global variable is set to the shortest du= ration to be printed. - =20 - @param[in] Limit The number of records to print. Zero is ALL. - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items fr= om display. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. -**/ -EFI_STATUS -DumpRawTrace( - IN UINTN Limit, - IN BOOLEAN ExcludeFlag - ) -{ - MEASUREMENT_RECORD Measurement; - UINT64 ElapsedTime; - UINT64 Duration; - UINTN LogEntryKey; - UINTN Count; - UINTN Index; - - EFI_STRING StringPtr; - EFI_STRING StringPtrUnknown; - EFI_STATUS Status; - - Status =3D EFI_SUCCESS; - - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECTION_RAW= TRACE), NULL); - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (StringPtr =3D=3D NULL) ? StringPtrUnknown : StringPtr); - FreePool (StringPtr); - FreePool (StringPtrUnknown); - - if (mShowId) { - PrintToken (STRING_TOKEN (STR_DP_RAW_HEADR2) ); - PrintToken (STRING_TOKEN (STR_DP_RAW_DASHES2) ); - } else { - PrintToken (STRING_TOKEN (STR_DP_RAW_HEADR) ); - PrintToken (STRING_TOKEN (STR_DP_RAW_DASHES) ); - } - - LogEntryKey =3D 0; - Count =3D 0; - Index =3D 0; - while ( WITHIN_LIMIT(Count, Limit) && - ((LogEntryKey =3D GetPerformanceMeasurementEx ( - LogEntryKey, - &Measurement.Handle, - &Measurement.Token, - &Measurement.Module, - &Measurement.StartTimeStamp, - &Measurement.EndTimeStamp, - &Measurement.Identifier)) !=3D 0) - ) - { - ++Index; // Count every record. First record is 1. - ElapsedTime =3D 0; - if (Measurement.EndTimeStamp !=3D 0) { - Duration =3D GetDuration (&Measurement); - ElapsedTime =3D DurationInMicroSeconds ( Duration ); - } - if ((ElapsedTime < mInterestThreshold) || - ((ExcludeFlag) && (GetCumulativeItem(&Measurement) >=3D 0)) - ) { // Ignore "uninteresting" or Excluded records - continue; - } - ++Count; // Count the number of records printed - - if (mShowId) { - PrintToken (STRING_TOKEN (STR_DP_RAW_VARS2), - Index, // 1 based, Which measurement record is being printed - Measurement.Handle, - Measurement.StartTimeStamp, - Measurement.EndTimeStamp, - Measurement.Token, - Measurement.Module, - Measurement.Identifier - ); - } else { - PrintToken (STRING_TOKEN (STR_DP_RAW_VARS), - Index, // 1 based, Which measurement record is being printed - Measurement.Handle, - Measurement.StartTimeStamp, - Measurement.EndTimeStamp, - Measurement.Token, - Measurement.Module - ); - } - if (ShellGetExecutionBreakFlag ()) { - Status =3D EFI_ABORTED; - break; - } - } - return Status; -} - -/**=20 - Gather and print Major Phase metrics. - =20 -**/ -VOID -ProcessPhases( - VOID - ) -{ - MEASUREMENT_RECORD Measurement; - UINT64 BdsTimeoutValue; - UINT64 SecTime; - UINT64 PeiTime; - UINT64 DxeTime; - UINT64 BdsTime; - UINT64 ElapsedTime; - UINT64 Duration; - UINT64 Total; - EFI_STRING StringPtr; - UINTN LogEntryKey; - EFI_STRING StringPtrUnknown; - - BdsTimeoutValue =3D 0; - SecTime =3D 0; - PeiTime =3D 0; - DxeTime =3D 0; - BdsTime =3D 0; - // - // Get Execution Phase Statistics - // - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECTION_PHA= SES), NULL); - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (StringPtr =3D=3D NULL) ? StringPtrUnknown : StringPtr); - FreePool (StringPtr); - FreePool (StringPtrUnknown); - - LogEntryKey =3D 0; - while ((LogEntryKey =3D GetPerformanceMeasurementEx ( - LogEntryKey, - &Measurement.Handle, - &Measurement.Token, - &Measurement.Module, - &Measurement.StartTimeStamp, - &Measurement.EndTimeStamp, - &Measurement.Identifier)) !=3D 0) - { - if (Measurement.EndTimeStamp =3D=3D 0) { // Skip "incomplete" records - continue; - } - Duration =3D GetDuration (&Measurement); - if ( Measurement.Handle !=3D NULL - && (AsciiStrnCmp (Measurement.Token, ALit_BdsTO, PERF_TOKEN_LENGTH= ) =3D=3D 0) - ) - { - BdsTimeoutValue =3D Duration; - } else if (AsciiStrnCmp (Measurement.Token, ALit_SEC, PERF_TOKEN_LENGT= H) =3D=3D 0) { - SecTime =3D Duration; - } else if (AsciiStrnCmp (Measurement.Token, ALit_PEI, PERF_TOKEN_LENGT= H) =3D=3D 0) { - PeiTime =3D Duration; - } else if (AsciiStrnCmp (Measurement.Token, ALit_DXE, PERF_TOKEN_LENGT= H) =3D=3D 0) { - DxeTime =3D Duration; - } else if (AsciiStrnCmp (Measurement.Token, ALit_BDS, PERF_TOKEN_LENGT= H) =3D=3D 0) { - BdsTime =3D Duration; - } - } - - Total =3D 0; - - // print SEC phase duration time - // - if (SecTime > 0) { - ElapsedTime =3D DurationInMicroSeconds ( SecTime ); // Calculate e= lapsed time in microseconds - Total +=3D DivU64x32 (ElapsedTime, 1000); // Accumulate time in mill= iseconds - PrintToken (STRING_TOKEN (STR_DP_SEC_PHASE), ElapsedTime); - } - - // print PEI phase duration time - // - if (PeiTime > 0) { - ElapsedTime =3D DivU64x32 ( - PeiTime, - (UINT32)TimerInfo.Frequency - ); - Total +=3D ElapsedTime; - PrintToken (STRING_TOKEN (STR_DP_PHASE_DURATION), ALit_PEI, ElapsedTim= e); - } - - // print DXE phase duration time - // - if (DxeTime > 0) { - ElapsedTime =3D DivU64x32 ( - DxeTime, - (UINT32)TimerInfo.Frequency - ); - Total +=3D ElapsedTime; - PrintToken (STRING_TOKEN (STR_DP_PHASE_DURATION), ALit_DXE, ElapsedTim= e); - } - - // print BDS phase duration time - // - if (BdsTime > 0) { - ElapsedTime =3D DivU64x32 ( - BdsTime, - (UINT32)TimerInfo.Frequency - ); - Total +=3D ElapsedTime; - PrintToken (STRING_TOKEN (STR_DP_PHASE_DURATION), ALit_BDS, ElapsedTim= e); - } - - if (BdsTimeoutValue > 0) { - ElapsedTime =3D DivU64x32 ( - BdsTimeoutValue, - (UINT32)TimerInfo.Frequency - ); - PrintToken (STRING_TOKEN (STR_DP_PHASE_BDSTO), ALit_BdsTO, ElapsedTime= ); - } - - PrintToken (STRING_TOKEN (STR_DP_TOTAL_DURATION), Total); -} - -/**=20 - Gather and print Handle data. - =20 - @param[in] ExcludeFlag TRUE to exclude individual Cumulative items = from display. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. - @return Others from a call to gBS->LocateHandleBuffer(). -**/ -EFI_STATUS -ProcessHandles( - IN BOOLEAN ExcludeFlag - ) -{ - MEASUREMENT_RECORD Measurement; - UINT64 ElapsedTime; - UINT64 Duration; - EFI_HANDLE *HandleBuffer; - EFI_STRING StringPtr; - UINTN Index; - UINTN LogEntryKey; - UINTN Count; - UINTN HandleCount; - EFI_STATUS Status; - EFI_STRING StringPtrUnknown; - - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECTION_DRI= VERS), NULL); - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (StringPtr =3D=3D NULL) ? StringPtrUnknown : StringPtr); - FreePool (StringPtr); - FreePool (StringPtrUnknown); - - Status =3D gBS->LocateHandleBuffer (AllHandles, NULL, NULL, &HandleCount= , &HandleBuffer); - if (EFI_ERROR (Status)) { - PrintToken (STRING_TOKEN (STR_DP_HANDLES_ERROR), Status); - } - else { -#if DP_DEBUG =3D=3D 2 - Print (L"There are %,d Handles defined.\n", (Size / sizeof(HandleBuffe= r[0]))); -#endif - - if (mShowId) { - PrintToken (STRING_TOKEN (STR_DP_HANDLE_SECTION2) ); - } else { - PrintToken (STRING_TOKEN (STR_DP_HANDLE_SECTION) ); - } - PrintToken (STRING_TOKEN (STR_DP_DASHES) ); - - LogEntryKey =3D 0; - Count =3D 0; - while ((LogEntryKey =3D GetPerformanceMeasurementEx ( - LogEntryKey, - &Measurement.Handle, - &Measurement.Token, - &Measurement.Module, - &Measurement.StartTimeStamp, - &Measurement.EndTimeStamp, - &Measurement.Identifier)) !=3D 0) - { - Count++; - Duration =3D GetDuration (&Measurement); - ElapsedTime =3D DurationInMicroSeconds ( Duration ); - if ((ElapsedTime < mInterestThreshold) || - (Measurement.EndTimeStamp =3D=3D 0) || - (Measurement.Handle =3D=3D NULL) || - ((ExcludeFlag) && (GetCumulativeItem(&Measurement) >=3D 0)) - ) { // Ignore "uninteresting" or excluded records - continue; - } - mGaugeString[0] =3D 0; // Empty driver name by default - AsciiStrToUnicodeStrS (Measurement.Token, mUnicodeToken, ARRAY_SIZE = (mUnicodeToken)); - // See if the Handle is in the HandleBuffer - for (Index =3D 0; Index < HandleCount; Index++) { - if (Measurement.Handle =3D=3D HandleBuffer[Index]) { - GetNameFromHandle (HandleBuffer[Index]); // Name is put into mGa= ugeString - break; - } - } - // Ensure that the argument strings are not too long. - mGaugeString[DP_GAUGE_STRING_LENGTH] =3D 0; - mUnicodeToken[11] =3D 0; - if (mGaugeString[0] !=3D 0) { - // Display the record if it has a valid handle. - if (mShowId) { - PrintToken ( - STRING_TOKEN (STR_DP_HANDLE_VARS2), - Count, // 1 based, Which measurement record is being prin= ted - Index + 1, // 1 based, Which handle is being printed - mGaugeString, - mUnicodeToken, - ElapsedTime, - Measurement.Identifier - ); - } else { - PrintToken ( - STRING_TOKEN (STR_DP_HANDLE_VARS), - Count, // 1 based, Which measurement record is being prin= ted - Index + 1, // 1 based, Which handle is being printed - mGaugeString, - mUnicodeToken, - ElapsedTime - ); - } - } - if (ShellGetExecutionBreakFlag ()) { - Status =3D EFI_ABORTED; - break; - } - } - } - if (HandleBuffer !=3D NULL) { - FreePool (HandleBuffer); - } - return Status; -} - -/**=20 - Gather and print PEIM data. - =20 - Only prints complete PEIM records - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. -**/ -EFI_STATUS -ProcessPeims( - VOID -) -{ - MEASUREMENT_RECORD Measurement; - UINT64 Duration; - UINT64 ElapsedTime; - EFI_STRING StringPtr; - UINTN LogEntryKey; - UINTN TIndex; - EFI_STRING StringPtrUnknown; - EFI_STATUS Status; - - Status =3D EFI_SUCCESS; - - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECTION_PEI= MS), NULL); - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (StringPtr =3D=3D NULL) ? StringPtrUnknown : StringPtr); - FreePool (StringPtr); - FreePool (StringPtrUnknown); - - if (mShowId) { - PrintToken (STRING_TOKEN (STR_DP_PEIM_SECTION2)); - } else { - PrintToken (STRING_TOKEN (STR_DP_PEIM_SECTION)); - } - PrintToken (STRING_TOKEN (STR_DP_DASHES)); - TIndex =3D 0; - LogEntryKey =3D 0; - while ((LogEntryKey =3D GetPerformanceMeasurementEx ( - LogEntryKey, - &Measurement.Handle, - &Measurement.Token, - &Measurement.Module, - &Measurement.StartTimeStamp, - &Measurement.EndTimeStamp, - &Measurement.Identifier)) !=3D 0) - { - TIndex++; - if ((Measurement.EndTimeStamp =3D=3D 0) || - (AsciiStrnCmp (Measurement.Token, ALit_PEIM, PERF_TOKEN_LENGTH) != =3D 0) - ) { - continue; - } - - Duration =3D GetDuration (&Measurement); - ElapsedTime =3D DurationInMicroSeconds ( Duration ); // Calculate ela= psed time in microseconds - if (ElapsedTime >=3D mInterestThreshold) { - // PEIM FILE Handle is the start address of its FFS file that contai= ns its file guid. - if (mShowId) { - PrintToken (STRING_TOKEN (STR_DP_PEIM_VARS2), - TIndex, // 1 based, Which measurement record is being prin= ted - Measurement.Handle, // base address - Measurement.Handle, // file guid - ElapsedTime, - Measurement.Identifier - ); - } else { - PrintToken (STRING_TOKEN (STR_DP_PEIM_VARS), - TIndex, // 1 based, Which measurement record is being prin= ted - Measurement.Handle, // base address - Measurement.Handle, // file guid - ElapsedTime - ); - } - } - if (ShellGetExecutionBreakFlag ()) { - Status =3D EFI_ABORTED; - break; - } - } - return Status; -} - -/**=20 - Gather and print global data. - =20 - Strips out incomplete or "Execution Phase" records - Only prints records where Handle is NULL - Increment TIndex for every record, even skipped ones, so that we have an - indication of every measurement record taken. - - @retval EFI_SUCCESS The operation was successful. - @retval EFI_ABORTED The user aborts the operation. -**/ -EFI_STATUS -ProcessGlobal( - VOID -) -{ - MEASUREMENT_RECORD Measurement; - UINT64 Duration; - UINT64 ElapsedTime; - EFI_STRING StringPtr; - UINTN LogEntryKey; - UINTN Index; // Index, or number, of the meas= urement record being processed - EFI_STRING StringPtrUnknown; - EFI_STATUS Status; - - Status =3D EFI_SUCCESS; - - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECTION_GEN= ERAL), NULL); - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (StringPtr =3D=3D NULL) ? StringPtrUnknown: StringPtr); - FreePool (StringPtr); - FreePool (StringPtrUnknown); - - if (mShowId) { - PrintToken (STRING_TOKEN (STR_DP_GLOBAL_SECTION2)); - } else { - PrintToken (STRING_TOKEN (STR_DP_GLOBAL_SECTION)); - } - PrintToken (STRING_TOKEN (STR_DP_DASHES)); - - Index =3D 1; - LogEntryKey =3D 0; - - while ((LogEntryKey =3D GetPerformanceMeasurementEx ( - LogEntryKey, - &Measurement.Handle, - &Measurement.Token, - &Measurement.Module, - &Measurement.StartTimeStamp, - &Measurement.EndTimeStamp, - &Measurement.Identifier)) !=3D 0) - { - AsciiStrToUnicodeStrS (Measurement.Module, mGaugeString, ARRAY_SIZE (m= GaugeString)); - AsciiStrToUnicodeStrS (Measurement.Token, mUnicodeToken, ARRAY_SIZE (m= UnicodeToken)); - mGaugeString[25] =3D 0; - mUnicodeToken[31] =3D 0; - if ( ! ( IsPhase( &Measurement) || - (Measurement.Handle !=3D NULL) || - (Measurement.EndTimeStamp =3D=3D 0) - )) - { - Duration =3D GetDuration (&Measurement); - ElapsedTime =3D DurationInMicroSeconds ( Duration ); - if (ElapsedTime >=3D mInterestThreshold) { - if (mShowId) { - PrintToken ( - STRING_TOKEN (STR_DP_GLOBAL_VARS2), - Index, - mGaugeString, - mUnicodeToken, - ElapsedTime, - Measurement.Identifier - ); - } else { - PrintToken ( - STRING_TOKEN (STR_DP_GLOBAL_VARS), - Index, - mGaugeString, - mUnicodeToken, - ElapsedTime - ); - } - } - } - if (ShellGetExecutionBreakFlag ()) { - Status =3D EFI_ABORTED; - break; - } - Index++; - } - return Status; -} - -/**=20 - Gather and print cumulative data. - =20 - Traverse the measurement records and:
- For each record with a Token listed in the CumData array:
- - Update the instance count and the total, minimum, and maximum durat= ions. - Finally, print the gathered cumulative statistics. - - @param[in] CustomCumulativeData A pointer to the cumtom cumulative d= ata. - -**/ -VOID -ProcessCumulative( - IN PERF_CUM_DATA *CustomCumulativeData OPTIONAL - ) -{ - UINT64 AvgDur; // the computed average durati= on - UINT64 Dur; - UINT64 MinDur; - UINT64 MaxDur; - EFI_STRING StringPtr; - UINTN TIndex; - EFI_STRING StringPtrUnknown; - - StringPtrUnknown =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_ALIT_UN= KNOWN), NULL); =20 - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_SECTION_CUM= ULATIVE), NULL); - PrintToken( STRING_TOKEN (STR_DP_SECTION_HEADER), - (StringPtr =3D=3D NULL) ? StringPtrUnknown: StringPtr); - FreePool (StringPtr); - FreePool (StringPtrUnknown); - - PrintToken (STRING_TOKEN (STR_DP_CUMULATIVE_SECT_1)); - PrintToken (STRING_TOKEN (STR_DP_CUMULATIVE_SECT_2)); - PrintToken (STRING_TOKEN (STR_DP_DASHES)); - - for ( TIndex =3D 0; TIndex < NumCum; ++TIndex) { - if (CumData[TIndex].Count !=3D 0) { - AvgDur =3D DivU64x32 (CumData[TIndex].Duration, CumData[TIndex].Coun= t); - AvgDur =3D DurationInMicroSeconds(AvgDur); - Dur =3D DurationInMicroSeconds(CumData[TIndex].Duration); - MaxDur =3D DurationInMicroSeconds(CumData[TIndex].MaxDur); - MinDur =3D DurationInMicroSeconds(CumData[TIndex].MinDur); - =20 - PrintToken (STRING_TOKEN (STR_DP_CUMULATIVE_STATS), - CumData[TIndex].Name, - CumData[TIndex].Count, - Dur, - AvgDur, - MinDur, - MaxDur - ); - } - } - - // - // Print the custom cumulative data. - // - if (CustomCumulativeData !=3D NULL) { - if (CustomCumulativeData->Count !=3D 0) { - AvgDur =3D DivU64x32 (CustomCumulativeData->Duration, CustomCumulati= veData->Count); - AvgDur =3D DurationInMicroSeconds (AvgDur); - Dur =3D DurationInMicroSeconds (CustomCumulativeData->Duration); - MaxDur =3D DurationInMicroSeconds (CustomCumulativeData->MaxDur); - MinDur =3D DurationInMicroSeconds (CustomCumulativeData->MinDur); - } else { - AvgDur =3D 0; - Dur =3D 0; - MaxDur =3D 0; - MinDur =3D 0; - } - PrintToken (STRING_TOKEN (STR_DP_CUMULATIVE_STATS), - CustomCumulativeData->Name, - CustomCumulativeData->Count, - Dur, - AvgDur, - MinDur, - MaxDur - ); - } -} diff --git a/PerformancePkg/Dp_App/DpUtilities.c b/PerformancePkg/Dp_App/Dp= Utilities.c deleted file mode 100644 index d3a9b6eab3..0000000000 --- a/PerformancePkg/Dp_App/DpUtilities.c +++ /dev/null @@ -1,489 +0,0 @@ -/** @file - Utility functions used by the Dp application. - - Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
- (C) Copyright 2016 Hewlett Packard Enterprise Development LP
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -**/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include "Dp.h" -#include "Literals.h" -#include "DpInternal.h" - -/** - Wrap original FreePool to check NULL pointer first. - - @param[in] Buffer The pointer to the buffer to free. - -**/ -VOID -SafeFreePool ( - IN VOID *Buffer - ) -{ - if (Buffer !=3D NULL) { - FreePool (Buffer); - } -} - -/**=20 - Calculate an event's duration in timer ticks. - =20 - Given the count direction and the event's start and end timer values, - calculate the duration of the event in timer ticks. Information for - the current measurement is pointed to by the parameter. - =20 - If the measurement's start time is 1, it indicates that the developer - is indicating that the measurement began at the release of reset. - The start time is adjusted to the timer's starting count before performi= ng - the elapsed time calculation. - =20 - The calculated duration, in ticks, is the absolute difference between - the measurement's ending and starting counts. - =20 - @param Measurement Pointer to a MEASUREMENT_RECORD structure containing - data for the current measurement. - =20 - @return The 64-bit duration of the event. -**/ -UINT64 -GetDuration ( - IN OUT MEASUREMENT_RECORD *Measurement - ) -{ - UINT64 Duration; - BOOLEAN Error; - - if (Measurement->EndTimeStamp =3D=3D 0) { - return 0; - } - - // PERF_START macros are called with a value of 1 to indicate - // the beginning of time. So, adjust the start ticker value - // to the real beginning of time. - // Assumes no wraparound. Even then, there is a very low probability - // of having a valid StartTicker value of 1. - if (Measurement->StartTimeStamp =3D=3D 1) { - Measurement->StartTimeStamp =3D TimerInfo.StartCount; - } - if (TimerInfo.CountUp) { - Duration =3D Measurement->EndTimeStamp - Measurement->StartTimeStamp; - Error =3D (BOOLEAN)(Duration > Measurement->EndTimeStamp); - } - else { - Duration =3D Measurement->StartTimeStamp - Measurement->EndTimeStamp; - Error =3D (BOOLEAN)(Duration > Measurement->StartTimeStamp); - } - - if (Error) { - DEBUG ((EFI_D_ERROR, ALit_TimerLibError)); - Duration =3D 0; - } - return Duration; -} - -/**=20 - Determine whether the Measurement record is for an EFI Phase. - =20 - The Token and Module members of the measurement record are checked. - Module must be empty and Token must be one of SEC, PEI, DXE, BDS, or SHE= LL. - =20 - @param[in] Measurement A pointer to the Measurement record to test. - =20 - @retval TRUE The measurement record is for an EFI Phase. - @retval FALSE The measurement record is NOT for an EFI Phase. -**/ -BOOLEAN -IsPhase( - IN MEASUREMENT_RECORD *Measurement - ) -{ - BOOLEAN RetVal; - - RetVal =3D (BOOLEAN)( ( *Measurement->Module =3D=3D '\0') = && - ((AsciiStrnCmp (Measurement->Token, ALit_SEC, PERF_TOKEN_LENGT= H) =3D=3D 0) || - (AsciiStrnCmp (Measurement->Token, ALit_PEI, PERF_TOKEN_LENGT= H) =3D=3D 0) || - (AsciiStrnCmp (Measurement->Token, ALit_DXE, PERF_TOKEN_LENGT= H) =3D=3D 0) || - (AsciiStrnCmp (Measurement->Token, ALit_BDS, PERF_TOKEN_LENGT= H) =3D=3D 0)) - ); - return RetVal; -} - -/**=20 - Get the file name portion of the Pdb File Name. - =20 - The portion of the Pdb File Name between the last backslash and - either a following period or the end of the string is converted - to Unicode and copied into UnicodeBuffer. The name is truncated, - if necessary, to ensure that UnicodeBuffer is not overrun. - =20 - @param[in] PdbFileName Pdb file name. - @param[out] UnicodeBuffer The resultant Unicode File Name. - =20 -**/ -VOID -GetShortPdbFileName ( - IN CHAR8 *PdbFileName, - OUT CHAR16 *UnicodeBuffer - ) -{ - UINTN IndexA; // Current work location within an ASCII string. - UINTN IndexU; // Current work location within a Unicode string. - UINTN StartIndex; - UINTN EndIndex; - - ZeroMem (UnicodeBuffer, (DP_GAUGE_STRING_LENGTH + 1) * sizeof (CHAR16)); - - if (PdbFileName =3D=3D NULL) { - StrCpyS (UnicodeBuffer, DP_GAUGE_STRING_LENGTH + 1, L" "); - } else { - StartIndex =3D 0; - for (EndIndex =3D 0; PdbFileName[EndIndex] !=3D 0; EndIndex++) - ; - for (IndexA =3D 0; PdbFileName[IndexA] !=3D 0; IndexA++) { - if ((PdbFileName[IndexA] =3D=3D '\\') || (PdbFileName[IndexA] =3D=3D= '/')) { - StartIndex =3D IndexA + 1; - } - - if (PdbFileName[IndexA] =3D=3D '.') { - EndIndex =3D IndexA; - } - } - - IndexU =3D 0; - for (IndexA =3D StartIndex; IndexA < EndIndex; IndexA++) { - UnicodeBuffer[IndexU] =3D (CHAR16) PdbFileName[IndexA]; - IndexU++; - if (IndexU >=3D DP_GAUGE_STRING_LENGTH) { - UnicodeBuffer[DP_GAUGE_STRING_LENGTH] =3D 0; - break; - } - } - } -} - -/**=20 - Get a human readable name for an image handle. - The following methods will be tried orderly: - 1. Image PDB - 2. ComponentName2 protocol - 3. FFS UI section - 4. Image GUID - 5. Image DevicePath - 6. Unknown Driver Name - - @param[in] Handle - - @post The resulting Unicode name string is stored in the - mGaugeString global array. - -**/ -VOID -GetNameFromHandle ( - IN EFI_HANDLE Handle - ) -{ - EFI_STATUS Status; - EFI_LOADED_IMAGE_PROTOCOL *Image; - CHAR8 *PdbFileName; - EFI_DRIVER_BINDING_PROTOCOL *DriverBinding; - EFI_STRING StringPtr; - EFI_DEVICE_PATH_PROTOCOL *LoadedImageDevicePath; - EFI_DEVICE_PATH_PROTOCOL *DevicePath; - EFI_GUID *NameGuid; - CHAR16 *NameString; - UINTN StringSize; - CHAR8 *PlatformLanguage; - CHAR8 *BestLanguage; - EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2; - - Image =3D NULL; - LoadedImageDevicePath =3D NULL; - DevicePath =3D NULL; - BestLanguage =3D NULL; - PlatformLanguage =3D NULL; - - // - // Method 1: Get the name string from image PDB - // - Status =3D gBS->HandleProtocol ( - Handle, - &gEfiLoadedImageProtocolGuid, - (VOID **) &Image - ); - - if (EFI_ERROR (Status)) { - Status =3D gBS->OpenProtocol ( - Handle, - &gEfiDriverBindingProtocolGuid, - (VOID **) &DriverBinding, - NULL, - NULL, - EFI_OPEN_PROTOCOL_GET_PROTOCOL - ); - if (!EFI_ERROR (Status)) { - Status =3D gBS->HandleProtocol ( - DriverBinding->ImageHandle, - &gEfiLoadedImageProtocolGuid, - (VOID **) &Image - ); - } - } - - if (!EFI_ERROR (Status)) { - PdbFileName =3D PeCoffLoaderGetPdbPointer (Image->ImageBase); - - if (PdbFileName !=3D NULL) { - GetShortPdbFileName (PdbFileName, mGaugeString); - return; - } - } - - // - // Method 2: Get the name string from ComponentName2 protocol - // - Status =3D gBS->HandleProtocol ( - Handle, - &gEfiComponentName2ProtocolGuid, - (VOID **) &ComponentName2 - ); - if (!EFI_ERROR (Status)) { - // - // Get the current platform language setting - // - GetEfiGlobalVariable2 (L"PlatformLang", (VOID**)&PlatformLanguage, NUL= L); - - BestLanguage =3D GetBestLanguage( - ComponentName2->SupportedLanguages, - FALSE, - PlatformLanguage, - ComponentName2->SupportedLanguages, - NULL - ); - - SafeFreePool (PlatformLanguage); - Status =3D ComponentName2->GetDriverName ( - ComponentName2, - BestLanguage, - &StringPtr - ); - SafeFreePool (BestLanguage); - if (!EFI_ERROR (Status)) { - StrnCpyS ( - mGaugeString, - DP_GAUGE_STRING_LENGTH + 1, - StringPtr, - DP_GAUGE_STRING_LENGTH - ); - return; - } - } - - Status =3D gBS->HandleProtocol ( - Handle, - &gEfiLoadedImageDevicePathProtocolGuid, - (VOID **) &LoadedImageDevicePath - ); - if (!EFI_ERROR (Status) && (LoadedImageDevicePath !=3D NULL)) { - DevicePath =3D LoadedImageDevicePath; - } else if (Image !=3D NULL) { - DevicePath =3D Image->FilePath; - } - - if (DevicePath !=3D NULL) { - // - // Try to get image GUID from image DevicePath - // - NameGuid =3D NULL; - while (!IsDevicePathEndType (DevicePath)) { - NameGuid =3D EfiGetNameGuidFromFwVolDevicePathNode ((MEDIA_FW_VOL_FI= LEPATH_DEVICE_PATH *) DevicePath); - if (NameGuid !=3D NULL) { - break; - } - DevicePath =3D NextDevicePathNode (DevicePath); - } - - if (NameGuid !=3D NULL) { - // - // Try to get the image's FFS UI section by image GUID - // - NameString =3D NULL; - StringSize =3D 0; - Status =3D GetSectionFromAnyFv ( - NameGuid, - EFI_SECTION_USER_INTERFACE, - 0, - (VOID **) &NameString, - &StringSize - ); - - if (!EFI_ERROR (Status)) { - // - // Method 3. Get the name string from FFS UI section - // - StrnCpyS ( - mGaugeString, - DP_GAUGE_STRING_LENGTH + 1, - NameString, - DP_GAUGE_STRING_LENGTH - ); - FreePool (NameString); - } else { - // - // Method 4: Get the name string from image GUID - // - UnicodeSPrint (mGaugeString, sizeof (mGaugeString), L"%g", NameGui= d); - } - return; - } else { - // - // Method 5: Get the name string from image DevicePath - // - NameString =3D ConvertDevicePathToText (DevicePath, TRUE, FALSE); - if (NameString !=3D NULL) { - StrnCpyS ( - mGaugeString, - DP_GAUGE_STRING_LENGTH + 1, - NameString, - DP_GAUGE_STRING_LENGTH - ); - FreePool (NameString); - return; - } - } - } - - // - // Method 6: Unknown Driver Name - // - StringPtr =3D HiiGetString (gHiiHandle, STRING_TOKEN (STR_DP_ERROR_NAME)= , NULL); - ASSERT (StringPtr !=3D NULL); - StrCpyS (mGaugeString, DP_GAUGE_STRING_LENGTH + 1, StringPtr); - FreePool (StringPtr); - return; -} - -/**=20 - Calculate the Duration in microseconds. - =20 - Duration is multiplied by 1000, instead of Frequency being divided by 10= 00 or - multiplying the result by 1000, in order to maintain precision. Since D= uration is - a 64-bit value, multiplying it by 1000 is unlikely to produce an overflo= w. - =20 - The time is calculated as (Duration * 1000) / Timer_Frequency. - =20 - @param[in] Duration The event duration in timer ticks. - =20 - @return A 64-bit value which is the Elapsed time in microseconds. -**/ -UINT64 -DurationInMicroSeconds ( - IN UINT64 Duration - ) -{ - UINT64 Temp; - - Temp =3D MultU64x32 (Duration, 1000); - return DivU64x32 (Temp, TimerInfo.Frequency); -} - -/**=20 - Formatted Print using a Hii Token to reference the localized format stri= ng. - =20 - @param[in] Token A HII token associated with a localized Unicode stri= ng. - @param[in] ... The variable argument list. - =20 - @return The number of characters converted by UnicodeVSPrint= (). - =20 -**/ -UINTN -EFIAPI -PrintToken ( - IN UINT16 Token, - ... - ) -{ - VA_LIST Marker; - EFI_STRING StringPtr; - UINTN Return; - UINTN BufferSize; - - StringPtr =3D HiiGetString (gHiiHandle, Token, NULL); - ASSERT (StringPtr !=3D NULL); - - VA_START (Marker, Token); - - BufferSize =3D (PcdGet32 (PcdUefiLibMaxPrintBufferSize) + 1) * sizeof (C= HAR16); - - if (mPrintTokenBuffer =3D=3D NULL) { - mPrintTokenBuffer =3D AllocatePool (BufferSize); - ASSERT (mPrintTokenBuffer !=3D NULL); - } - SetMem( mPrintTokenBuffer, BufferSize, 0); - - Return =3D UnicodeVSPrint (mPrintTokenBuffer, BufferSize, StringPtr, Mar= ker); - VA_END (Marker); - =20 - if (Return > 0 && gST->ConOut !=3D NULL) { - gST->ConOut->OutputString (gST->ConOut, mPrintTokenBuffer); - } - FreePool (StringPtr); - return Return; -} - -/**=20 - Get index of Measurement Record's match in the CumData array. - =20 - If the Measurement's Token value matches a Token in one of the CumData - records, the index of the matching record is returned. The returned - index is a signed value so that negative values can indicate that - the Measurement didn't match any entry in the CumData array. - =20 - @param[in] Measurement A pointer to a Measurement Record to match again= st the CumData array. - =20 - @retval <0 Token is not in the CumData array. - @retval >=3D0 Return value is the index into CumData where Token i= s found. -**/ -INTN -GetCumulativeItem( - IN MEASUREMENT_RECORD *Measurement - ) -{ - INTN Index; - - for( Index =3D 0; Index < (INTN)NumCum; ++Index) { - if (AsciiStrnCmp (Measurement->Token, CumData[Index].Name, PERF_TOKEN_= LENGTH) =3D=3D 0) { - return Index; // Exit, we found a match - } - } - // If the for loop exits, Token was not found. - return -1; // Indicate failure -} diff --git a/PerformancePkg/Dp_App/Literals.c b/PerformancePkg/Dp_App/Liter= als.c deleted file mode 100644 index c1cddfb9ff..0000000000 --- a/PerformancePkg/Dp_App/Literals.c +++ /dev/null @@ -1,22 +0,0 @@ -/** @file - Definitions of ASCII string literals used by DP. - - Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -**/ -#include - -// ASCII String literals which probably don't need translation -CHAR8 const ALit_TimerLibError[] =3D "Timer library instance error!\n"; -CHAR8 const ALit_SEC[] =3D SEC_TOK; -CHAR8 const ALit_DXE[] =3D DXE_TOK; -CHAR8 const ALit_PEI[] =3D PEI_TOK; -CHAR8 const ALit_BDS[] =3D BDS_TOK; -CHAR8 const ALit_BdsTO[] =3D "BdsTimeOut"; -CHAR8 const ALit_PEIM[] =3D "PEIM"; diff --git a/PerformancePkg/Dp_App/Literals.h b/PerformancePkg/Dp_App/Liter= als.h deleted file mode 100644 index 8aec09c024..0000000000 --- a/PerformancePkg/Dp_App/Literals.h +++ /dev/null @@ -1,26 +0,0 @@ -/** @file - Declarations of ASCII string literals used by DP. - - Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -**/ -#ifndef _LITERALS_H_ -#define _LITERALS_H_ - -// ASCII String literals which probably don't need translation -extern CHAR8 const ALit_TimerLibError[]; -extern CHAR8 const ALit_SEC[]; -extern CHAR8 const ALit_DXE[]; -extern CHAR8 const ALit_SHELL[]; -extern CHAR8 const ALit_PEI[]; -extern CHAR8 const ALit_BDS[]; -extern CHAR8 const ALit_BdsTO[]; -extern CHAR8 const ALit_PEIM[]; - -#endif // _LITERALS_H_ diff --git a/PerformancePkg/Include/Guid/PerformancePkgTokenSpace.h b/Perfo= rmancePkg/Include/Guid/PerformancePkgTokenSpace.h deleted file mode 100644 index 86dfe87d84..0000000000 --- a/PerformancePkg/Include/Guid/PerformancePkgTokenSpace.h +++ /dev/null @@ -1,25 +0,0 @@ -/** @file - GUID for PerformancePkg PCD Token Space=20 - - Copyright (c) 2011, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. - -**/ - -#ifndef _PERFORMANCEPKG_TOKEN_SPACE_GUID_H_ -#define _PERFORMANCEPKG_TOKEN_SPACE_GUID_H_ - -#define PERFORMANCEPKG_TOKEN_SPACE_GUID \ - { \ - 0x669346ef, 0xFDad, 0x4aeb, { 0x08, 0xa6, 0x21, 0x46, 0x2d, 0x3f, 0xef= , 0x7d } \ - } - -extern EFI_GUID gPerformancePkgTokenSpaceGuid; - -#endif diff --git a/PerformancePkg/Include/Guid/TscFrequency.h b/PerformancePkg/In= clude/Guid/TscFrequency.h deleted file mode 100644 index f7c4a1c394..0000000000 --- a/PerformancePkg/Include/Guid/TscFrequency.h +++ /dev/null @@ -1,25 +0,0 @@ -/** @file - GUID for TSC frequency - - Copyright (c) 2011, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. - -**/ - -#ifndef _TSC_FREQUENCY_GUID_H_ -#define _TSC_FREQUENCY_GUID_H_ - -#define EFI_TSC_FREQUENCY_GUID \ - { \ - 0xdba6a7e3, 0xbb57, 0x4be7, { 0x8a, 0xf8, 0xd5, 0x78, 0xdb, 0x7e, 0x56= , 0x87 } \ - } - -extern EFI_GUID gEfiTscFrequencyGuid; - -#endif diff --git a/PerformancePkg/Include/Ich/GenericIch.h b/PerformancePkg/Inclu= de/Ich/GenericIch.h deleted file mode 100644 index 697ea049ee..0000000000 --- a/PerformancePkg/Include/Ich/GenericIch.h +++ /dev/null @@ -1,55 +0,0 @@ -/** @file - Generic definitions for registers in the Intel Ich devices. - - These definitions should work for any version of Ich. - - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may b= e found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. - -**/ - -#ifndef _GENERIC_ICH_H_ -#define _GENERIC_ICH_H_ - -/** GenericIchDefs Generic ICH Definitions. - -Definitions beginning with "R_" are registers. -Definitions beginning with "B_" are bits within registers. -Definitions beginning with "V_" are meaningful values of bits within the r= egisters. -**/ -///@{ - -/// IchPciAddressing PCI Bus Address for ICH. -///@{ -#define PCI_BUS_NUMBER_ICH 0x00 ///< ICH is on PCI Bus 0. -#define PCI_DEVICE_NUMBER_ICH_LPC 31 ///< ICH is Device 31. -#define PCI_FUNCTION_NUMBER_ICH_LPC 0 ///< ICH is Function 0. -///@} - -/// IchAcpiCntr Control for the ICH's ACPI Counter. -///@{ -#define R_ICH_LPC_ACPI_BASE 0x40 -#define B_ICH_LPC_ACPI_BASE_BAR 0x0000FF80 -#define R_ICH_LPC_ACPI_CNT 0x44 -#define B_ICH_LPC_ACPI_CNT_ACPI_EN 0x80 -///@} - -/// IchAcpiTimer The ICH's ACPI Timer. -///@{ -#define R_ACPI_PM1_TMR 0x08 -#define V_ACPI_TMR_FREQUENCY 3579545 -#define V_ACPI_PM1_TMR_MAX_VAL 0x1000000 ///< The timer= is 24 bit overflow. -///@} - -/// Macro to generate the PCI address of any given ICH Register. -#define PCI_ICH_LPC_ADDRESS(Register) \ - ((UINTN)(PCI_LIB_ADDRESS (PCI_BUS_NUMBER_ICH, PCI_DEVICE_NUMBER_ICH_LPC,= PCI_FUNCTION_NUMBER_ICH_LPC, Register))) - -///@} -#endif // _GENERIC_ICH_H_ diff --git a/PerformancePkg/Include/PerformanceTokens.h b/PerformancePkg/In= clude/PerformanceTokens.h deleted file mode 100644 index bbbc48d776..0000000000 --- a/PerformancePkg/Include/PerformanceTokens.h +++ /dev/null @@ -1,28 +0,0 @@ -/** @file - ASCII String Literals with special meaning to Performance measurement an= d the Dp utility. - -Copyright (c) 2009 - 2010, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD = License -which accompanies this distribution. The full text of the license may be = found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLI= ED. - -**/ - -#ifndef __PERFORMANCE_TOKENS_H__ -#define __PERFORMANCE_TOKENS_H__ - -#define SEC_TOK "SEC" ///< SEC Phase -#define DXE_TOK "DXE" ///< DEC Phase -#define SHELL_TOK "SHELL" ///< Shell Phase -#define PEI_TOK "PEI" ///< PEI Phase -#define BDS_TOK "BDS" ///< BDS Phase -#define DRIVERBINDING_START_TOK "DB:Start:" ///< Driver Bind= ing Start() function call -#define DRIVERBINDING_SUPPORT_TOK "DB:Support:" ///< Driver Bind= ing Support() function call -#define LOAD_IMAGE_TOK "LoadImage:" ///< Load a disp= atched module -#define START_IMAGE_TOK "StartImage:" ///< Dispatched = Modules Entry Point execution - -#endif // __PERFORMANCE_TOKENS_H__ diff --git a/PerformancePkg/Library/TscTimerLib/BaseTscTimerLib.c b/Perform= ancePkg/Library/TscTimerLib/BaseTscTimerLib.c deleted file mode 100644 index c49f786641..0000000000 --- a/PerformancePkg/Library/TscTimerLib/BaseTscTimerLib.c +++ /dev/null @@ -1,45 +0,0 @@ -/** @file - A Base Timer Library implementation which uses the Time Stamp Counter in= the processor. - - For Pentium 4 processors, Intel Xeon processors (family [0FH], models [0= 3H and higher]); - for Intel Core Solo and Intel Core Duo processors (family [06H], model= [0EH]); - for the Intel Xeon processor 5100 series and Intel Core 2 Duo processo= rs (family [06H], model [0FH]); - for Intel Core 2 and Intel Xeon processors (family [06H], display_mode= l [17H]); - for Intel Atom processors (family [06H], display_model [1CH]): - the time-stamp counter increments at a constant rate. - That rate may be set by the maximum core-clock to bus-clock ratio of the= processor or may be set by - the maximum resolved frequency at which the processor is booted. The max= imum resolved frequency may - differ from the maximum qualified frequency of the processor. - - The specific processor configuration determines the behavior. Constant T= SC behavior ensures that the - duration of each clock tick is uniform and supports the use of the TSC a= s a wall clock timer even if - the processor core changes frequency. This is the architectural behavior= moving forward. - - A Processor's support for invariant TSC is indicated by CPUID.0x80000007= .EDX[8]. - - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may be= found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. - -**/ - -#include "TscTimerLibInternal.h" - -/** Get TSC frequency. - - @return The number of TSC counts per second. - -**/ -UINT64 -InternalGetTscFrequency ( - VOID - ) -{ - return InternalCalculateTscFrequency (); -} - diff --git a/PerformancePkg/Library/TscTimerLib/BaseTscTimerLib.inf b/Perfo= rmancePkg/Library/TscTimerLib/BaseTscTimerLib.inf deleted file mode 100644 index 9d622687b5..0000000000 --- a/PerformancePkg/Library/TscTimerLib/BaseTscTimerLib.inf +++ /dev/null @@ -1,59 +0,0 @@ -## @file -# Base Timer Library which uses the Time Stamp Counter in the processor. -# -# Note: There will be 1ms penalty to get TSC frequency every time -# by waiting for 3579 clocks of the ACPI timer, or 1ms. -# -# Note: This library is a sample implementation that depends on chipset A= CPI timer.=20 -# It may not work on new generation chipset. PcAtChipsetPkg AcpiTimerLi= b is=20 -# the generic timer library that can replace this one.=20 -# -# A version of the Timer Library using the processor's TSC. -# The time stamp counter in newer processors may support an enhancement, = referred to as invariant TSC. -# The invariant TSC runs at a constant rate in all ACPI P-, C-. and T-sta= tes. -# This is the architectural behavior moving forward. -# TSC reads are much more efficient and do not incur the overhead associa= ted with a ring transition or -# access to a platform resource. -# -# Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the B= SD License -# which accompanies this distribution. The full text of the license may b= e found at -# http://opensource.org/licenses/bsd-license.php -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. -# -## - -[Defines] - INF_VERSION =3D 0x00010005 - BASE_NAME =3D BaseTscTimerLib - FILE_GUID =3D D29338B9-50FE-4e4f-B7D4-A150A2C1F4FB - MODULE_TYPE =3D BASE - VERSION_STRING =3D 1.0 - LIBRARY_CLASS =3D TimerLib - - -# -# VALID_ARCHITECTURES =3D IA32 X64 -# - -[Sources.common] - TscTimerLibShare.c - BaseTscTimerLib.c - TscTimerLibInternal.h - - -[Packages] - MdePkg/MdePkg.dec - PerformancePkg/PerformancePkg.dec - - -[LibraryClasses] - PcdLib - PciLib - IoLib - BaseLib - -[Pcd.common] - gPerformancePkgTokenSpaceGuid.PcdPerfPkgAcpiIoPortBaseAddress ## S= OMETIMES_CONSUMES diff --git a/PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.c b/Performa= ncePkg/Library/TscTimerLib/DxeTscTimerLib.c deleted file mode 100644 index c540d420da..0000000000 --- a/PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.c +++ /dev/null @@ -1,102 +0,0 @@ -/** @file - A Dxe Timer Library implementation which uses the Time Stamp Counter in = the processor. - - For Pentium 4 processors, Intel Xeon processors (family [0FH], models [0= 3H and higher]); - for Intel Core Solo and Intel Core Duo processors (family [06H], model= [0EH]); - for the Intel Xeon processor 5100 series and Intel Core 2 Duo processo= rs (family [06H], model [0FH]); - for Intel Core 2 and Intel Xeon processors (family [06H], display_mode= l [17H]); - for Intel Atom processors (family [06H], display_model [1CH]): - the time-stamp counter increments at a constant rate. - That rate may be set by the maximum core-clock to bus-clock ratio of the= processor or may be set by - the maximum resolved frequency at which the processor is booted. The max= imum resolved frequency may - differ from the maximum qualified frequency of the processor. - - The specific processor configuration determines the behavior. Constant T= SC behavior ensures that the - duration of each clock tick is uniform and supports the use of the TSC a= s a wall clock timer even if - the processor core changes frequency. This is the architectural behavior= moving forward. - - A Processor's support for invariant TSC is indicated by CPUID.0x80000007= .EDX[8]. - - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may be= found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. - -**/ - -#include -#include -#include -#include -#include -#include "TscTimerLibInternal.h" - -UINT64 mTscFrequency; - -/** The constructor function determines the actual TSC frequency. - - First, Get TSC frequency from system configuration table with TSC freque= ncy GUID, - if the table is not found, install it. - This function will always return EFI_SUCCESS. - - @param ImageHandle The firmware allocated handle for the EFI imag= e. - @param SystemTable A pointer to the EFI System Table. - - @retval EFI_SUCCESS The constructor always returns EFI_SUCCESS. - -**/ -EFI_STATUS -EFIAPI -DxeTscTimerLibConstructor ( - IN EFI_HANDLE ImageHandle, - IN EFI_SYSTEM_TABLE *SystemTable - ) -{ - EFI_STATUS Status; - UINT64 *TscFrequency; - - TscFrequency =3D NULL; - // - // Get TSC frequency from system configuration table with TSC frequency = GUID. - // - Status =3D EfiGetSystemConfigurationTable (&gEfiTscFrequencyGuid, (VOID = **) &TscFrequency); - if (Status =3D=3D EFI_SUCCESS) { - ASSERT (TscFrequency !=3D NULL); - mTscFrequency =3D *TscFrequency; - return EFI_SUCCESS; - } - - // - // TSC frequency GUID system configuration table is not found, install i= t. - // - - Status =3D gBS->AllocatePool (EfiBootServicesData, sizeof (UINT64), (VOI= D **) &TscFrequency); - ASSERT_EFI_ERROR (Status); - - *TscFrequency =3D InternalCalculateTscFrequency (); - // - // TscFrequency now points to the number of TSC counts per second, insta= ll system configuration table for it. - // - gBS->InstallConfigurationTable (&gEfiTscFrequencyGuid, TscFrequency); - - mTscFrequency =3D *TscFrequency; - return EFI_SUCCESS; -} - -/** Get TSC frequency. - - @return The number of TSC counts per second. - -**/ -UINT64 -InternalGetTscFrequency ( - VOID - ) -{ - return mTscFrequency; -} - diff --git a/PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.inf b/Perfor= mancePkg/Library/TscTimerLib/DxeTscTimerLib.inf deleted file mode 100644 index 16db5f73ea..0000000000 --- a/PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.inf +++ /dev/null @@ -1,64 +0,0 @@ -## @file -# Dxe Timer Library which uses the Time Stamp Counter in the processor. -# -# Note: This library is a sample implementation that depends on chipset A= CPI timer.=20 -# It may not work on new generation chipset. PcAtChipsetPkg AcpiTimerLi= b is=20 -# the generic timer library that can replace this one.=20 -# -# A version of the Timer Library using the processor's TSC. -# The time stamp counter in newer processors may support an enhancement, = referred to as invariant TSC. -# The invariant TSC runs at a constant rate in all ACPI P-, C-. and T-sta= tes. -# This is the architectural behavior moving forward. -# TSC reads are much more efficient and do not incur the overhead associa= ted with a ring transition or -# access to a platform resource. -# -# Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the B= SD License -# which accompanies this distribution. The full text of the license may b= e found at -# http://opensource.org/licenses/bsd-license.php -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. -# -## - -[Defines] - INF_VERSION =3D 0x00010005 - BASE_NAME =3D DxeTscTimerLib - FILE_GUID =3D 95ab030f-b4fd-4ee4-92a5-9e04e87634d9 - MODULE_TYPE =3D DXE_DRIVER - VERSION_STRING =3D 1.0 - LIBRARY_CLASS =3D TimerLib|DXE_CORE DXE_DRIVER DXE_RUNT= IME_DRIVER DXE_SMM_DRIVER UEFI_APPLICATION UEFI_DRIVER SMM_CORE - - CONSTRUCTOR =3D DxeTscTimerLibConstructor - - -# -# VALID_ARCHITECTURES =3D IA32 X64 -# - -[Sources.common] - TscTimerLibShare.c - DxeTscTimerLib.c - TscTimerLibInternal.h - - -[Packages] - MdePkg/MdePkg.dec - PerformancePkg/PerformancePkg.dec - - -[LibraryClasses] - UefiBootServicesTableLib - PcdLib - PciLib - IoLib - BaseLib - UefiLib - DebugLib - -[Guids] - gEfiTscFrequencyGuid ## CONSUMES ## SystemTable - -[Pcd.common] - gPerformancePkgTokenSpaceGuid.PcdPerfPkgAcpiIoPortBaseAddress ## SOMET= IMES_CONSUMES diff --git a/PerformancePkg/Library/TscTimerLib/PeiTscTimerLib.c b/Performa= ncePkg/Library/TscTimerLib/PeiTscTimerLib.c deleted file mode 100644 index af3600b007..0000000000 --- a/PerformancePkg/Library/TscTimerLib/PeiTscTimerLib.c +++ /dev/null @@ -1,76 +0,0 @@ -/** @file - A Pei Timer Library implementation which uses the Time Stamp Counter in = the processor. - - For Pentium 4 processors, Intel Xeon processors (family [0FH], models [0= 3H and higher]); - for Intel Core Solo and Intel Core Duo processors (family [06H], model= [0EH]); - for the Intel Xeon processor 5100 series and Intel Core 2 Duo processo= rs (family [06H], model [0FH]); - for Intel Core 2 and Intel Xeon processors (family [06H], display_mode= l [17H]); - for Intel Atom processors (family [06H], display_model [1CH]): - the time-stamp counter increments at a constant rate. - That rate may be set by the maximum core-clock to bus-clock ratio of the= processor or may be set by - the maximum resolved frequency at which the processor is booted. The max= imum resolved frequency may - differ from the maximum qualified frequency of the processor. - - The specific processor configuration determines the behavior. Constant T= SC behavior ensures that the - duration of each clock tick is uniform and supports the use of the TSC a= s a wall clock timer even if - the processor core changes frequency. This is the architectural behavior= moving forward. - - A Processor's support for invariant TSC is indicated by CPUID.0x80000007= .EDX[8]. - - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may be= found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. - -**/ - -#include -#include -#include -#include "TscTimerLibInternal.h" - -/** Get TSC frequency from TSC frequency GUID HOB, if the HOB is not foun= d, build it. - - @return The number of TSC counts per second. - -**/ -UINT64 -InternalGetTscFrequency ( - VOID - ) -{ - EFI_HOB_GUID_TYPE *GuidHob; - VOID *DataInHob; - UINT64 TscFrequency; - - // - // Get TSC frequency from TSC frequency GUID HOB. - // - GuidHob =3D GetFirstGuidHob (&gEfiTscFrequencyGuid); - if (GuidHob !=3D NULL) { - DataInHob =3D GET_GUID_HOB_DATA (GuidHob); - TscFrequency =3D * (UINT64 *) DataInHob; - return TscFrequency; - } - - // - // TSC frequency GUID HOB is not found, build it. - // - - TscFrequency =3D InternalCalculateTscFrequency (); - // - // TscFrequency is now equal to the number of TSC counts per second, bui= ld GUID HOB for it. - // - BuildGuidDataHob ( - &gEfiTscFrequencyGuid, - &TscFrequency, - sizeof (UINT64) - ); - - return TscFrequency; -} - diff --git a/PerformancePkg/Library/TscTimerLib/PeiTscTimerLib.inf b/Perfor= mancePkg/Library/TscTimerLib/PeiTscTimerLib.inf deleted file mode 100644 index 68e34e0ede..0000000000 --- a/PerformancePkg/Library/TscTimerLib/PeiTscTimerLib.inf +++ /dev/null @@ -1,60 +0,0 @@ -## @file -# Pei Timer Library which uses the Time Stamp Counter in the processor. -# -# Note: This library is a sample implementation that depends on chipset A= CPI timer.=20 -# It may not work on new generation chipset. PcAtChipsetPkg AcpiTimerLi= b is=20 -# the generic timer library that can replace this one.=20 -# -# A version of the Timer Library using the processor's TSC. -# The time stamp counter in newer processors may support an enhancement, = referred to as invariant TSC. -# The invariant TSC runs at a constant rate in all ACPI P-, C-. and T-sta= tes. -# This is the architectural behavior moving forward. -# TSC reads are much more efficient and do not incur the overhead associa= ted with a ring transition or -# access to a platform resource. -# -# Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the B= SD License -# which accompanies this distribution. The full text of the license may b= e found at -# http://opensource.org/licenses/bsd-license.php -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IM= PLIED. -# -## - -[Defines] - INF_VERSION =3D 0x00010005 - BASE_NAME =3D PeiTscTimerLib - FILE_GUID =3D 342C36C0-15DF-43b4-9EC9-FBF748BFB3D1 - MODULE_TYPE =3D PEIM - VERSION_STRING =3D 1.0 - LIBRARY_CLASS =3D TimerLib|PEIM PEI_CORE - - -# -# VALID_ARCHITECTURES =3D IA32 X64 -# - -[Sources.common] - TscTimerLibShare.c - PeiTscTimerLib.c - TscTimerLibInternal.h - - -[Packages] - MdePkg/MdePkg.dec - PerformancePkg/PerformancePkg.dec - - -[LibraryClasses] - PcdLib - PciLib - IoLib - BaseLib - HobLib - -[Guids] - gEfiTscFrequencyGuid ## PRODUCES ## HOB - -[Pcd.common] - gPerformancePkgTokenSpaceGuid.PcdPerfPkgAcpiIoPortBaseAddress ## SOM= ETIMES_CONSUMES diff --git a/PerformancePkg/Library/TscTimerLib/TscTimerLibInternal.h b/Per= formancePkg/Library/TscTimerLib/TscTimerLibInternal.h deleted file mode 100644 index a4ed0ebb31..0000000000 --- a/PerformancePkg/Library/TscTimerLib/TscTimerLibInternal.h +++ /dev/null @@ -1,55 +0,0 @@ -/** @file - Internal header file for TscTimerLib instances. - - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may be= found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. - -**/ - -#ifndef _TSC_TIMER_LIB_INTERNAL_H_ -#define _TSC_TIMER_LIB_INTERNAL_H_ - -#include - -#include -#include -#include -#include -#include - -/** Get TSC frequency. - - @return The number of TSC counts per second. - -**/ -UINT64 -InternalGetTscFrequency ( - VOID - ); - -/** Calculate TSC frequency. - - The TSC counting frequency is determined by comparing how far it counts - during a 1ms period as determined by the ACPI timer. The ACPI timer is - used because it counts at a known frequency. - If ACPI I/O space not enabled, this function will enable it. Then the - TSC is sampled, followed by waiting for 3579 clocks of the ACPI timer, o= r 1ms. - The TSC is then sampled again. The difference multiplied by 1000 is the = TSC - frequency. There will be a small error because of the overhead of reading - the ACPI timer. An attempt is made to determine and compensate for this = error. - - @return The number of TSC counts per second. - -**/ -UINT64 -InternalCalculateTscFrequency ( - VOID - ); - -#endif diff --git a/PerformancePkg/Library/TscTimerLib/TscTimerLibShare.c b/Perfor= mancePkg/Library/TscTimerLib/TscTimerLibShare.c deleted file mode 100644 index 161af00237..0000000000 --- a/PerformancePkg/Library/TscTimerLib/TscTimerLibShare.c +++ /dev/null @@ -1,275 +0,0 @@ -/** @file - The Timer Library implementation which uses the Time Stamp Counter in th= e processor. - - For Pentium 4 processors, Intel Xeon processors (family [0FH], models [0= 3H and higher]); - for Intel Core Solo and Intel Core Duo processors (family [06H], model= [0EH]); - for the Intel Xeon processor 5100 series and Intel Core 2 Duo processo= rs (family [06H], model [0FH]); - for Intel Core 2 and Intel Xeon processors (family [06H], display_mode= l [17H]); - for Intel Atom processors (family [06H], display_model [1CH]): - the time-stamp counter increments at a constant rate. - That rate may be set by the maximum core-clock to bus-clock ratio of the= processor or may be set by - the maximum resolved frequency at which the processor is booted. The max= imum resolved frequency may - differ from the maximum qualified frequency of the processor. - - The specific processor configuration determines the behavior. Constant T= SC behavior ensures that the - duration of each clock tick is uniform and supports the use of the TSC a= s a wall clock timer even if - the processor core changes frequency. This is the architectural behavior= moving forward. - - A Processor's support for invariant TSC is indicated by CPUID.0x80000007= .EDX[8]. - - Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
- This program and the accompanying materials - are licensed and made available under the terms and conditions of the BS= D License - which accompanies this distribution. The full text of the license may be= found at - http://opensource.org/licenses/bsd-license.php - - THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. - -**/ - -#include "TscTimerLibInternal.h" - -/** Calculate TSC frequency. - - The TSC counting frequency is determined by comparing how far it counts - during a 1ms period as determined by the ACPI timer. The ACPI timer is - used because it counts at a known frequency. - If ACPI I/O space not enabled, this function will enable it. Then the - TSC is sampled, followed by waiting for 3579 clocks of the ACPI timer, o= r 1ms. - The TSC is then sampled again. The difference multiplied by 1000 is the = TSC - frequency. There will be a small error because of the overhead of reading - the ACPI timer. An attempt is made to determine and compensate for this = error. - - @return The number of TSC counts per second. - -**/ -UINT64 -InternalCalculateTscFrequency ( - VOID - ) -{ - UINT64 StartTSC; - UINT64 EndTSC; - UINT32 TimerAddr; - UINT32 Ticks; - UINT64 TscFrequency; - - // - // If ACPI I/O space is not enabled yet, program ACPI I/O base address a= nd enable it. - // - if ((PciRead8 (PCI_ICH_LPC_ADDRESS (R_ICH_LPC_ACPI_CNT)) & B_ICH_LPC_ACP= I_CNT_ACPI_EN) =3D=3D 0) { - PciWrite16 (PCI_ICH_LPC_ADDRESS (R_ICH_LPC_ACPI_BASE), PcdGet16 (PcdPe= rfPkgAcpiIoPortBaseAddress)); - PciOr8 (PCI_ICH_LPC_ADDRESS (R_ICH_LPC_ACPI_CNT), B_ICH_LPC_ACPI_CNT_A= CPI_EN); - } - - // - // ACPI I/O space should be enabled now, locate the ACPI Timer. - // ACPI I/O base address maybe have be initialized by other driver with = different value, - // So get it from PCI space directly. - // - TimerAddr =3D ((PciRead16 (PCI_ICH_LPC_ADDRESS (R_ICH_LPC_ACPI_BASE))) &= B_ICH_LPC_ACPI_BASE_BAR) + R_ACPI_PM1_TMR; - Ticks =3D IoRead32 (TimerAddr) + (3579); // Set Ticks to 1ms in the= future - StartTSC =3D AsmReadTsc(); // Get base value for the = TSC - // - // Wait until the ACPI timer has counted 1ms. - // Timer wrap-arounds are handled correctly by this function. - // When the current ACPI timer value is greater than 'Ticks', the while = loop will exit. - // - while (((Ticks - IoRead32 (TimerAddr)) & BIT23) =3D=3D 0) { - CpuPause(); - } - EndTSC =3D AsmReadTsc(); // TSC value 1ms later - - TscFrequency =3D MultU64x32 ( - (EndTSC - StartTSC), // Number of TSC counts in 1= ms - 1000 // Number of ms in a second - ); - - return TscFrequency; -} - -/** Stalls the CPU for at least the given number of ticks. - - Stalls the CPU for at least the given number of ticks. It's invoked by - MicroSecondDelay() and NanoSecondDelay(). - - @param[in] Delay A period of time to delay in ticks. - -**/ -VOID -InternalX86Delay ( - IN UINT64 Delay - ) -{ - UINT64 Ticks; - - // - // The target timer count is calculated here - // - Ticks =3D AsmReadTsc() + Delay; - - // - // Wait until time out - // Timer wrap-arounds are NOT handled correctly by this function. - // Thus, this function must be called within 10 years of reset since - // Intel guarantees a minimum of 10 years before the TSC wraps. - // - while (AsmReadTsc() <=3D Ticks) CpuPause(); -} - -/** Stalls the CPU for at least the specified number of MicroSeconds. - - @param[in] MicroSeconds The minimum number of microseconds to delay. - - @return The value of MicroSeconds input. - -**/ -UINTN -EFIAPI -MicroSecondDelay ( - IN UINTN MicroSeconds - ) -{ - InternalX86Delay ( - DivU64x32 ( - MultU64x64 ( - InternalGetTscFrequency (), - MicroSeconds - ), - 1000000u - ) - ); - return MicroSeconds; -} - -/** Stalls the CPU for at least the specified number of NanoSeconds. - - @param[in] NanoSeconds The minimum number of nanoseconds to delay. - - @return The value of NanoSeconds input. - -**/ -UINTN -EFIAPI -NanoSecondDelay ( - IN UINTN NanoSeconds - ) -{ - InternalX86Delay ( - DivU64x32 ( - MultU64x32 ( - InternalGetTscFrequency (), - (UINT32)NanoSeconds - ), - 1000000000u - ) - ); - return NanoSeconds; -} - -/** Retrieves the current value of the 64-bit free running Time-Stamp cou= nter. - - The time-stamp counter (as implemented in the P6 family, Pentium, Pentiu= m M, - Pentium 4, Intel Xeon, Intel Core Solo and Intel Core Duo processors and - later processors) is a 64-bit counter that is set to 0 following a RESET= of - the processor. Following a RESET, the counter increments even when the - processor is halted by the HLT instruction or the external STPCLK# pin. = Note - that the assertion of the external DPSLP# pin may cause the time-stamp - counter to stop. - - The properties of the counter can be retrieved by the - GetPerformanceCounterProperties() function. - - @return The current value of the free running performance counter. - -**/ -UINT64 -EFIAPI -GetPerformanceCounter ( - VOID - ) -{ - return AsmReadTsc(); -} - -/** Retrieves the 64-bit frequency in Hz and the range of performance cou= nter - values. - - If StartValue is not NULL, then the value that the performance counter s= tarts - with, 0x0, is returned in StartValue. If EndValue is not NULL, then the = value - that the performance counter end with, 0xFFFFFFFFFFFFFFFF, is returned in - EndValue. - - The 64-bit frequency of the performance counter, in Hz, is always return= ed. - To determine average processor clock frequency, Intel recommends the use= of - EMON logic to count processor core clocks over the period of time for wh= ich - the average is required. - - - @param[out] StartValue Pointer to where the performance counter's sta= rting value is saved, or NULL. - @param[out] EndValue Pointer to where the performance counter's end= ing value is saved, or NULL. - - @return The frequency in Hz. - -**/ -UINT64 -EFIAPI -GetPerformanceCounterProperties ( - OUT UINT64 *StartValue, OPTIONAL - OUT UINT64 *EndValue OPTIONAL - ) -{ - if (StartValue !=3D NULL) { - *StartValue =3D 0; - } - if (EndValue !=3D NULL) { - *EndValue =3D 0xFFFFFFFFFFFFFFFFull; - } - - return InternalGetTscFrequency (); -} - -/** - Converts elapsed ticks of performance counter to time in nanoseconds. - - This function converts the elapsed ticks of running performance counter = to - time value in unit of nanoseconds. - - @param Ticks The number of elapsed ticks of running performance cou= nter. - - @return The elapsed time in nanoseconds. - -**/ -UINT64 -EFIAPI -GetTimeInNanoSecond ( - IN UINT64 Ticks - ) -{ - UINT64 Frequency; - UINT64 NanoSeconds; - UINT64 Remainder; - INTN Shift; - - Frequency =3D GetPerformanceCounterProperties (NULL, NULL); - - // - // Ticks - // Time =3D --------- x 1,000,000,000 - // Frequency - // - NanoSeconds =3D MultU64x32 (DivU64x64Remainder (Ticks, Frequency, &Remai= nder), 1000000000u); - - // - // Ensure (Remainder * 1,000,000,000) will not overflow 64-bit. - // Since 2^29 < 1,000,000,000 =3D 0x3B9ACA00 < 2^30, Remainder should < = 2^(64-30) =3D 2^34, - // i.e. highest bit set in Remainder should <=3D 33. - // - Shift =3D MAX (0, HighBitSet64 (Remainder) - 33); - Remainder =3D RShiftU64 (Remainder, (UINTN) Shift); - Frequency =3D RShiftU64 (Frequency, (UINTN) Shift); - NanoSeconds +=3D DivU64x64Remainder (MultU64x32 (Remainder, 1000000000u)= , Frequency, NULL); - - return NanoSeconds; -} diff --git a/PerformancePkg/PerformancePkg.dec b/PerformancePkg/Performance= Pkg.dec deleted file mode 100644 index f39dc0bc95..0000000000 --- a/PerformancePkg/PerformancePkg.dec +++ /dev/null @@ -1,37 +0,0 @@ -## @file -# Build description file to generate Shell DP application and -# Performance Libraries. -# -# Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BS= D License -# which accompanies this distribution. The full text of the license may b= e found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -# -## - -[Defines] - PACKAGE_NAME =3D PerformancePkg - PACKAGE_GUID =3D ce898697-b945-46e2-a26e-5752af565185 - PACKAGE_VERSION =3D 0.2 - DEC_SPECIFICATION =3D 0x00010005 - -[Includes] - Include - -[Guids] - ## Performance Package token space guid - # Include/Guid/PerformancePkgTokenSpace.h - # 669346ef-fdad-4aeb-a608-7def3f2d4621 - gPerformancePkgTokenSpaceGuid =3D { 0x669346ef, 0xFDad, 0x4aeb, { = 0x08, 0xa6, 0x21, 0x46, 0x2d, 0x3f, 0xef, 0x7d }} - - ## Include/Guid/TscFrequency.h - gEfiTscFrequencyGuid =3D { 0xdba6a7e3, 0xbb57, 0x4be7, { = 0x8a, 0xf8, 0xd5, 0x78, 0xdb, 0x7e, 0x56, 0x87 }} - -[PcdsFixedAtBuild] - ## The base address of the ACPI registers within the ICH PCI space. - # This space must be 128-byte aligned. - gPerformancePkgTokenSpaceGuid.PcdPerfPkgAcpiIoPortBaseAddress|0x400|UINT= 16|1 diff --git a/PerformancePkg/PerformancePkg.dsc b/PerformancePkg/Performance= Pkg.dsc deleted file mode 100644 index 95cc905cbb..0000000000 --- a/PerformancePkg/PerformancePkg.dsc +++ /dev/null @@ -1,68 +0,0 @@ -## @file -# Build description file to generate Shell DP application. -# -# Copyright (c) 2009 - 2017, Intel Corporation. All rights reserved.
-# This program and the accompanying materials -# are licensed and made available under the terms and conditions of the BS= D License -# which accompanies this distribution. The full text of the license may b= e found at -# http://opensource.org/licenses/bsd-license.php -# -# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMP= LIED. -# -## - -[Defines] - DSC_SPECIFICATION =3D 0x00010005 - PLATFORM_NAME =3D PerformancePkg - PLATFORM_GUID =3D 9ffd7bf2-231e-4525-9a42-480545dafd17 - PLATFORM_VERSION =3D 0.2 - OUTPUT_DIRECTORY =3D Build/PerformancePkg - SUPPORTED_ARCHITECTURES =3D IA32|IPF|X64|EBC - BUILD_TARGETS =3D DEBUG|RELEASE|NOOPT - SKUID_IDENTIFIER =3D DEFAULT - -[LibraryClasses] - # - # Entry Point Libraries - # - UefiApplicationEntryPoint|MdePkg/Library/UefiApplicationEntryPoint/UefiA= pplicationEntryPoint.inf - # - # Common Libraries - # - BaseLib|MdePkg/Library/BaseLib/BaseLib.inf - BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf - UefiLib|MdePkg/Library/UefiLib/UefiLib.inf - PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf - PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf - HobLib|MdePkg/Library/DxeHobLib/DxeHobLib.inf - MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAll= ocationLib.inf - UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBoo= tServicesTableLib.inf - UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/U= efiRuntimeServicesTableLib.inf - DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf - DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseD= ebugPrintErrorLevelLib.inf =20 - DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLibOptional= DevicePathProtocol.inf - PeCoffGetEntryPointLib|MdePkg/Library/BasePeCoffGetEntryPointLib/BasePeC= offGetEntryPointLib.inf - HiiLib|MdeModulePkg/Library/UefiHiiLib/UefiHiiLib.inf - UefiHiiServicesLib|MdeModulePkg/Library/UefiHiiServicesLib/UefiHiiServic= esLib.inf - PerformanceLib|MdeModulePkg/Library/DxeSmmPerformanceLib/DxeSmmPerforman= ceLib.inf - IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf - FileHandleLib|MdePkg/Library/UefiFileHandleLib/UefiFileHandleLib.inf - SortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf - - ShellLib|ShellPkg/Library/UefiShellLib/UefiShellLib.inf - - PciLib|MdePkg/Library/BasePciLibCf8/BasePciLibCf8.inf - PciCf8Lib|MdePkg/Library/BasePciCf8Lib/BasePciCf8Lib.inf - DxeServicesLib|MdePkg/Library/DxeServicesLib/DxeServicesLib.inf - -[Components.IA32, Components.X64] - PerformancePkg/Library/TscTimerLib/DxeTscTimerLib.inf - PerformancePkg/Library/TscTimerLib/PeiTscTimerLib.inf - PerformancePkg/Library/TscTimerLib/BaseTscTimerLib.inf - -[Components] - PerformancePkg/Dp_App/Dp.inf - -[BuildOptions] - *_*_*_CC_FLAGS =3D -D DISABLE_NEW_DEPRECATED_INTERFACES --=20 2.15.1.windows.2 _______________________________________________ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel