atrace: add support for tracing CPU idle events
This change adds the -i command line flag to atrace to enable tracing CPU idle kernel events. Change-Id: I4a2c8619224c0f50c7fd7c61c7b24fa2211f656c
This commit is contained in:
parent
7b5170b249
commit
3169533f1d
@ -29,6 +29,7 @@
|
||||
static int g_traceDurationSeconds = 5;
|
||||
static bool g_traceSchedSwitch = false;
|
||||
static bool g_traceCpuFrequency = false;
|
||||
static bool g_traceCpuIdle = false;
|
||||
static bool g_traceGovernorLoad = false;
|
||||
static bool g_traceWorkqueue = false;
|
||||
static bool g_traceOverwrite = false;
|
||||
@ -54,6 +55,9 @@ static const char* k_schedSwitchEnablePath =
|
||||
static const char* k_cpuFreqEnablePath =
|
||||
"/sys/kernel/debug/tracing/events/power/cpu_frequency/enable";
|
||||
|
||||
static const char* k_cpuIdleEnablePath =
|
||||
"/sys/kernel/debug/tracing/events/power/cpu_idle/enable";
|
||||
|
||||
static const char* k_governorLoadEnablePath =
|
||||
"/sys/kernel/debug/tracing/events/cpufreq_interactive/enable";
|
||||
|
||||
@ -117,6 +121,12 @@ static bool setCpuFrequencyTracingEnable(bool enable)
|
||||
return setKernelOptionEnable(k_cpuFreqEnablePath, enable);
|
||||
}
|
||||
|
||||
// Enable or disable tracing of CPU idle events.
|
||||
static bool setCpuIdleTracingEnable(bool enable)
|
||||
{
|
||||
return setKernelOptionEnable(k_cpuIdleEnablePath, enable);
|
||||
}
|
||||
|
||||
// Enable or disable tracing of the interactive CPU frequency governor's idea of
|
||||
// the CPU load.
|
||||
static bool setGovernorLoadTracingEnable(bool enable)
|
||||
@ -184,6 +194,7 @@ static bool startTrace()
|
||||
ok &= setTraceOverwriteEnable(g_traceOverwrite);
|
||||
ok &= setSchedSwitchTracingEnable(g_traceSchedSwitch);
|
||||
ok &= setCpuFrequencyTracingEnable(g_traceCpuFrequency);
|
||||
ok &= setCpuIdleTracingEnable(g_traceCpuIdle);
|
||||
if (fileExists(k_governorLoadEnablePath) || g_traceGovernorLoad) {
|
||||
ok &= setGovernorLoadTracingEnable(g_traceGovernorLoad);
|
||||
}
|
||||
@ -363,7 +374,7 @@ int main(int argc, char **argv)
|
||||
for (;;) {
|
||||
int ret;
|
||||
|
||||
ret = getopt(argc, argv, "b:cflst:wz");
|
||||
ret = getopt(argc, argv, "b:ciflst:wz");
|
||||
|
||||
if (ret < 0) {
|
||||
break;
|
||||
@ -378,6 +389,10 @@ int main(int argc, char **argv)
|
||||
g_traceOverwrite = true;
|
||||
break;
|
||||
|
||||
case 'i':
|
||||
g_traceCpuIdle = true;
|
||||
break;
|
||||
|
||||
case 'l':
|
||||
g_traceGovernorLoad = true;
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user