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

Commit 3169533f authored by Jamie Gennis's avatar Jamie Gennis
Browse files

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
parent 7b5170b2
Loading
Loading
Loading
Loading
+16 −1
Original line number Diff line number Diff line
@@ -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;