summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJamie Gennis <jgennis@google.com>2012-05-07 17:58:44 -0700
committerJamie Gennis <jgennis@google.com>2012-05-07 17:58:44 -0700
commit585c219b9b7c2e89b8db6707cacdaf29c362e7ba (patch)
treea9a6283ea315fba487589d7f3dab0d2a6ae7f9c4
parenteb213e7201b7288df2d2ec7e785349d993828bd3 (diff)
downloadextras-585c219b9b7c2e89b8db6707cacdaf29c362e7ba.tar.gz
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
-rw-r--r--atrace/atrace.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/atrace/atrace.c b/atrace/atrace.c
index 7b4f55e5..a6742957 100644
--- a/atrace/atrace.c
+++ b/atrace/atrace.c
@@ -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;