/** @file
This file include the file which can help to get the system
performance, all the function will only include if the performance
switch is set.
Copyright (c) 2004 - 2009, Intel Corporation. All rights reserved.<BR>
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
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/
#include "InternalBdsLib.h"
/**
Get the short verion of PDB file name to be
used in performance data logging.
@param PdbFileName The long PDB file name.
@param GaugeString The output string to be logged by performance logger.
**/
)
{
if (PdbFileName == NULL) {
} else {
StartIndex = 0;
;
}
}
}
Index1 = 0;
Index1++;
break;
}
}
GaugeString[Index1] = 0;
}
return ;
}
/**
Get the name from the Driver handle, which can be a handle with
EFI_LOADED_IMAGE_PROTOCOL or EFI_DRIVER_BINDING_PROTOCOL installed.
This name can be used in performance data logging.
@param Handle Driver handle.
@param GaugeString The output string to be logged by performance logger.
**/
)
{
//
// Get handle name from image protocol
//
);
(VOID **) &DriverBinding,
NULL,
NULL,
);
return ;
}
//
// Get handle name from image protocol
//
);
}
if (PdbFileName != NULL) {
}
return ;
}
/**
Allocates a block of memory and writes performance data of booting into it.
OS can processing these record.
**/
)
{
//
// List of flags indicating PerfEntry contains DXE handle
//
//
// Retrieve time stamp count as early as possible
//
Ticker = GetPerformanceCounter ();
//
// Record BDS raw performance data
//
if (EndValue >= StartValue) {
} else {
}
//
// Put Detailed performance data into memory
//
NULL,
NULL,
);
return ;
}
AcpiLowMemoryLength = 0x4000;
if (mAcpiLowMemoryBase == 0x0FFFFFFFF) {
//
// Allocate a block of memory that contain performance data to OS
//
);
return ;
}
}
NumPerfEntries = 0;
LogEntryKey = 0;
while ((LogEntryKey = GetPerformanceMeasurement (
&Handle,
&Token,
&Module,
&EndTicker)) != 0) {
}
//
// Get DXE drivers performance
//
Ticker = 0;
LogEntryKey = 0;
EntryIndex = 0;
while ((LogEntryKey = GetPerformanceMeasurement (
&Handle,
&Token,
&Module,
&EndTicker)) != 0) {
}
EntryIndex++;
if (StartTicker == 1) {
}
if (EndTicker == 1) {
}
}
}
if (Duration > 0) {
mPerfHeader.Count++;
goto Done;
}
}
}
//
// Get inserted performance data
//
LogEntryKey = 0;
EntryIndex = 0;
while ((LogEntryKey = GetPerformanceMeasurement (
&Handle,
&Token,
&Module,
&EndTicker)) != 0) {
if (StartTicker == 1) {
}
if (EndTicker == 1) {
}
mPerfHeader.Count++;
goto Done;
}
}
EntryIndex++;
}
Done:
//
// Put performance data to Reserved memory
//
CopyMem (
sizeof (PERF_HEADER)
);
gRT->SetVariable (
L"PerfDataMemAddr",
sizeof (EFI_PHYSICAL_ADDRESS),
);
return ;
}