summaryrefslogtreecommitdiffstats
path: root/cmds/atrace
diff options
context:
space:
mode:
authorJamie Gennis <jgennis@google.com>2012-04-09 17:33:45 -0700
committerJamie Gennis <jgennis@google.com>2012-04-09 17:37:17 -0700
commitfe312b98f747d7818ce865fb5b12b805f2ce9a9b (patch)
treeee6f6ac0055a8c4ecfceb51a702a0811977bd3cc /cmds/atrace
parentcc24c8e6b48c2eb204bf3d7f974dbff6dc0cc862 (diff)
downloadframeworks_native-fe312b98f747d7818ce865fb5b12b805f2ce9a9b.zip
frameworks_native-fe312b98f747d7818ce865fb5b12b805f2ce9a9b.tar.gz
frameworks_native-fe312b98f747d7818ce865fb5b12b805f2ce9a9b.tar.bz2
atrace: make cpu freq governor tracing optional
This change allows atrace to run on kernels that do not have CPU frequency interactive governor tracing enabled in the kernel. Change-Id: Ibfde751da7b6cc9a55794355093a37feb28f5e52
Diffstat (limited to 'cmds/atrace')
-rw-r--r--cmds/atrace/atrace.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/cmds/atrace/atrace.c b/cmds/atrace/atrace.c
index a617432..92fe5d1 100644
--- a/cmds/atrace/atrace.c
+++ b/cmds/atrace/atrace.c
@@ -55,7 +55,6 @@ static const char* k_cpuFreqEnablePath =
static const char* k_governorLoadEnablePath =
"/sys/kernel/debug/tracing/events/cpufreq_interactive/enable";
-
static const char* k_workqueueEnablePath =
"/sys/kernel/debug/tracing/events/workqueue/enable";
@@ -169,6 +168,11 @@ static bool setGlobalClockEnable(bool enable)
return writeStr(k_traceClockPath, enable ? "global" : "local");
}
+// Check whether a file exists.
+static bool fileExists(const char* filename) {
+ return access(filename, F_OK) != -1;
+}
+
// Enable tracing in the kernel.
static bool startTrace()
{
@@ -178,7 +182,9 @@ static bool startTrace()
ok &= setTraceOverwriteEnable(g_traceOverwrite);
ok &= setSchedSwitchTracingEnable(g_traceSchedSwitch);
ok &= setCpuFrequencyTracingEnable(g_traceCpuFrequency);
- ok &= setGovernorLoadTracingEnable(g_traceGovernorLoad);
+ if (fileExists(k_governorLoadEnablePath) || g_traceGovernorLoad) {
+ ok &= setGovernorLoadTracingEnable(g_traceGovernorLoad);
+ }
ok &= setWorkqueueTracingEnabled(g_traceWorkqueue);
ok &= setTraceBufferSizeKB(g_traceBufferSizeKB);
ok &= setGlobalClockEnable(true);
@@ -203,7 +209,9 @@ static void stopTrace()
setTraceOverwriteEnable(true);
setSchedSwitchTracingEnable(false);
setCpuFrequencyTracingEnable(false);
- setGovernorLoadTracingEnable(false);
+ if (fileExists(k_governorLoadEnablePath)) {
+ setGovernorLoadTracingEnable(false);
+ }
setWorkqueueTracingEnabled(false);
setGlobalClockEnable(false);