Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe312b98 authored by Jamie Gennis's avatar Jamie Gennis
Browse files

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
parent cc24c8e6
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -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);
    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);
    if (fileExists(k_governorLoadEnablePath)) {
        setGovernorLoadTracingEnable(false);
    }
    setWorkqueueTracingEnabled(false);
    setGlobalClockEnable(false);