diff options
| author | 2017-01-17 09:50:18 -0800 | |
|---|---|---|
| committer | 2017-01-20 15:13:02 -0800 | |
| commit | 2cd93cc4ce68da81815351db75cbda4b357e6753 (patch) | |
| tree | 057cbe5bd48f32129ead5c2cd069cabba6d8f9b4 | |
| parent | 2630e78f535b100d805376eccd586a687791de6f (diff) | |
Update atrace to work with tracefs, not debugfs
When tracefs is mounted, tracing is under /sys/kernel/tracing not
/sys/kernel/debug/tracing. Modify atrace to detect this situation and
get the right files.
Bug: 31856701
Test: Run atrace, check output is same where ever tracefs is mounted
Change-Id: I78df0da91d9f56c56077d1b8b9dba7b0126b2d8d
| -rw-r--r-- | cmds/atrace/atrace.cpp | 176 | ||||
| -rw-r--r-- | cmds/atrace/atrace.rc | 59 |
2 files changed, 162 insertions, 73 deletions
diff --git a/cmds/atrace/atrace.cpp b/cmds/atrace/atrace.cpp index d39c5cef47..ee2b2758fc 100644 --- a/cmds/atrace/atrace.cpp +++ b/cmds/atrace/atrace.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ - #define LOG_TAG "atrace" +#define LOG_TAG "atrace" #include <errno.h> #include <fcntl.h> @@ -112,81 +112,81 @@ static const TracingCategory k_categories[] = { { "adb", "ADB", ATRACE_TAG_ADB, { } }, { k_coreServiceCategory, "Core services", 0, { } }, { "sched", "CPU Scheduling", 0, { - { REQ, "/sys/kernel/debug/tracing/events/sched/sched_switch/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/sched/sched_wakeup/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/sched/sched_blocked_reason/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/sched/sched_cpu_hotplug/enable" }, + { REQ, "events/sched/sched_switch/enable" }, + { REQ, "events/sched/sched_wakeup/enable" }, + { OPT, "events/sched/sched_blocked_reason/enable" }, + { OPT, "events/sched/sched_cpu_hotplug/enable" }, } }, { "irq", "IRQ Events", 0, { - { REQ, "/sys/kernel/debug/tracing/events/irq/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/ipi/enable" }, + { REQ, "events/irq/enable" }, + { OPT, "events/ipi/enable" }, } }, { "i2c", "I2C Events", 0, { - { REQ, "/sys/kernel/debug/tracing/events/i2c/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/i2c/i2c_read/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/i2c/i2c_write/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/i2c/i2c_result/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/i2c/i2c_reply/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/i2c/smbus_read/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/i2c/smbus_write/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/i2c/smbus_result/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/i2c/smbus_reply/enable" }, + { REQ, "events/i2c/enable" }, + { REQ, "events/i2c/i2c_read/enable" }, + { REQ, "events/i2c/i2c_write/enable" }, + { REQ, "events/i2c/i2c_result/enable" }, + { REQ, "events/i2c/i2c_reply/enable" }, + { OPT, "events/i2c/smbus_read/enable" }, + { OPT, "events/i2c/smbus_write/enable" }, + { OPT, "events/i2c/smbus_result/enable" }, + { OPT, "events/i2c/smbus_reply/enable" }, } }, { "freq", "CPU Frequency", 0, { - { REQ, "/sys/kernel/debug/tracing/events/power/cpu_frequency/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/power/clock_set_rate/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/power/cpu_frequency_limits/enable" }, + { REQ, "events/power/cpu_frequency/enable" }, + { OPT, "events/power/clock_set_rate/enable" }, + { OPT, "events/power/cpu_frequency_limits/enable" }, } }, { "membus", "Memory Bus Utilization", 0, { - { REQ, "/sys/kernel/debug/tracing/events/memory_bus/enable" }, + { REQ, "events/memory_bus/enable" }, } }, { "idle", "CPU Idle", 0, { - { REQ, "/sys/kernel/debug/tracing/events/power/cpu_idle/enable" }, + { REQ, "events/power/cpu_idle/enable" }, } }, { "disk", "Disk I/O", 0, { - { OPT, "/sys/kernel/debug/tracing/events/f2fs/f2fs_sync_file_enter/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/f2fs/f2fs_sync_file_exit/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/f2fs/f2fs_write_begin/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/f2fs/f2fs_write_end/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/ext4/ext4_da_write_begin/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/ext4/ext4_da_write_end/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/ext4/ext4_sync_file_enter/enable" }, - { OPT, "/sys/kernel/debug/tracing/events/ext4/ext4_sync_file_exit/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/block/block_rq_issue/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/block/block_rq_complete/enable" }, + { OPT, "events/f2fs/f2fs_sync_file_enter/enable" }, + { OPT, "events/f2fs/f2fs_sync_file_exit/enable" }, + { OPT, "events/f2fs/f2fs_write_begin/enable" }, + { OPT, "events/f2fs/f2fs_write_end/enable" }, + { OPT, "events/ext4/ext4_da_write_begin/enable" }, + { OPT, "events/ext4/ext4_da_write_end/enable" }, + { OPT, "events/ext4/ext4_sync_file_enter/enable" }, + { OPT, "events/ext4/ext4_sync_file_exit/enable" }, + { REQ, "events/block/block_rq_issue/enable" }, + { REQ, "events/block/block_rq_complete/enable" }, } }, { "mmc", "eMMC commands", 0, { - { REQ, "/sys/kernel/debug/tracing/events/mmc/enable" }, + { REQ, "events/mmc/enable" }, } }, { "load", "CPU Load", 0, { - { REQ, "/sys/kernel/debug/tracing/events/cpufreq_interactive/enable" }, + { REQ, "events/cpufreq_interactive/enable" }, } }, { "sync", "Synchronization", 0, { - { REQ, "/sys/kernel/debug/tracing/events/sync/enable" }, + { REQ, "events/sync/enable" }, } }, { "workq", "Kernel Workqueues", 0, { - { REQ, "/sys/kernel/debug/tracing/events/workqueue/enable" }, + { REQ, "events/workqueue/enable" }, } }, { "memreclaim", "Kernel Memory Reclaim", 0, { - { REQ, "/sys/kernel/debug/tracing/events/vmscan/mm_vmscan_direct_reclaim_begin/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/vmscan/mm_vmscan_direct_reclaim_end/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/vmscan/mm_vmscan_kswapd_wake/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/vmscan/mm_vmscan_kswapd_sleep/enable" }, + { REQ, "events/vmscan/mm_vmscan_direct_reclaim_begin/enable" }, + { REQ, "events/vmscan/mm_vmscan_direct_reclaim_end/enable" }, + { REQ, "events/vmscan/mm_vmscan_kswapd_wake/enable" }, + { REQ, "events/vmscan/mm_vmscan_kswapd_sleep/enable" }, } }, { "regulators", "Voltage and Current Regulators", 0, { - { REQ, "/sys/kernel/debug/tracing/events/regulator/enable" }, + { REQ, "events/regulator/enable" }, } }, { "binder_driver", "Binder Kernel driver", 0, { - { REQ, "/sys/kernel/debug/tracing/events/binder/binder_transaction/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/binder/binder_transaction_received/enable" }, + { REQ, "events/binder/binder_transaction/enable" }, + { REQ, "events/binder/binder_transaction_received/enable" }, } }, { "binder_lock", "Binder global lock trace", 0, { - { REQ, "/sys/kernel/debug/tracing/events/binder/binder_lock/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/binder/binder_locked/enable" }, - { REQ, "/sys/kernel/debug/tracing/events/binder/binder_unlock/enable" }, + { REQ, "events/binder/binder_lock/enable" }, + { REQ, "events/binder/binder_locked/enable" }, + { REQ, "events/binder/binder_unlock/enable" }, } }, { "pagecache", "Page cache", 0, { - { REQ, "/sys/kernel/debug/tracing/events/filemap/enable" }, + { REQ, "events/filemap/enable" }, } }, }; @@ -205,61 +205,62 @@ static const char* g_outputFile = nullptr; /* Global state */ static bool g_traceAborted = false; static bool g_categoryEnables[NELEM(k_categories)] = {}; +static std::string g_traceFolder; /* Sys file paths */ static const char* k_traceClockPath = - "/sys/kernel/debug/tracing/trace_clock"; + "trace_clock"; static const char* k_traceBufferSizePath = - "/sys/kernel/debug/tracing/buffer_size_kb"; + "buffer_size_kb"; static const char* k_tracingOverwriteEnablePath = - "/sys/kernel/debug/tracing/options/overwrite"; + "options/overwrite"; static const char* k_currentTracerPath = - "/sys/kernel/debug/tracing/current_tracer"; + "current_tracer"; static const char* k_printTgidPath = - "/sys/kernel/debug/tracing/options/print-tgid"; + "options/print-tgid"; static const char* k_funcgraphAbsTimePath = - "/sys/kernel/debug/tracing/options/funcgraph-abstime"; + "options/funcgraph-abstime"; static const char* k_funcgraphCpuPath = - "/sys/kernel/debug/tracing/options/funcgraph-cpu"; + "options/funcgraph-cpu"; static const char* k_funcgraphProcPath = - "/sys/kernel/debug/tracing/options/funcgraph-proc"; + "options/funcgraph-proc"; static const char* k_funcgraphFlatPath = - "/sys/kernel/debug/tracing/options/funcgraph-flat"; + "options/funcgraph-flat"; static const char* k_funcgraphDurationPath = - "/sys/kernel/debug/tracing/options/funcgraph-duration"; + "options/funcgraph-duration"; static const char* k_ftraceFilterPath = - "/sys/kernel/debug/tracing/set_ftrace_filter"; + "set_ftrace_filter"; static const char* k_tracingOnPath = - "/sys/kernel/debug/tracing/tracing_on"; + "tracing_on"; static const char* k_tracePath = - "/sys/kernel/debug/tracing/trace"; + "trace"; static const char* k_traceStreamPath = - "/sys/kernel/debug/tracing/trace_pipe"; + "trace_pipe"; static const char* k_traceMarkerPath = - "/sys/kernel/debug/tracing/trace_marker"; + "trace_marker"; // Check whether a file exists. static bool fileExists(const char* filename) { - return access(filename, F_OK) != -1; + return access((g_traceFolder + filename).c_str(), F_OK) != -1; } // Check whether a file is writable. static bool fileIsWritable(const char* filename) { - return access(filename, W_OK) != -1; + return access((g_traceFolder + filename).c_str(), W_OK) != -1; } // Truncate a file. @@ -268,9 +269,9 @@ static bool truncateFile(const char* path) // This uses creat rather than truncate because some of the debug kernel // device nodes (e.g. k_ftraceFilterPath) currently aren't changed by // calls to truncate, but they are cleared by calls to creat. - int traceFD = creat(path, 0); + int traceFD = creat((g_traceFolder + path).c_str(), 0); if (traceFD == -1) { - fprintf(stderr, "error truncating %s: %s (%d)\n", path, + fprintf(stderr, "error truncating %s: %s (%d)\n", (g_traceFolder + path).c_str(), strerror(errno), errno); return false; } @@ -282,9 +283,10 @@ static bool truncateFile(const char* path) static bool _writeStr(const char* filename, const char* str, int flags) { - int fd = open(filename, flags); + std::string fullFilename = g_traceFolder + filename; + int fd = open(fullFilename.c_str(), flags); if (fd == -1) { - fprintf(stderr, "error opening %s: %s (%d)\n", filename, + fprintf(stderr, "error opening %s: %s (%d)\n", fullFilename.c_str(), strerror(errno), errno); return false; } @@ -292,7 +294,7 @@ static bool _writeStr(const char* filename, const char* str, int flags) bool ok = true; ssize_t len = strlen(str); if (write(fd, str, len) != len) { - fprintf(stderr, "error writing to %s: %s (%d)\n", filename, + fprintf(stderr, "error writing to %s: %s (%d)\n", fullFilename.c_str(), strerror(errno), errno); ok = false; } @@ -318,7 +320,7 @@ static void writeClockSyncMarker() { char buffer[128]; int len = 0; - int fd = open(k_traceMarkerPath, O_WRONLY); + int fd = open((g_traceFolder + k_traceMarkerPath).c_str(), O_WRONLY); if (fd == -1) { fprintf(stderr, "error opening %s: %s (%d)\n", k_traceMarkerPath, strerror(errno), errno); @@ -439,7 +441,7 @@ static bool setTraceBufferSizeKB(int size) // local [global] counter uptime perf static bool isTraceClock(const char *mode) { - int fd = open(k_traceClockPath, O_RDONLY); + int fd = open((g_traceFolder + k_traceClockPath).c_str(), O_RDONLY); if (fd == -1) { fprintf(stderr, "error opening %s: %s (%d)\n", k_traceClockPath, strerror(errno), errno); @@ -652,7 +654,7 @@ static bool disableKernelTraceEvents() { static bool verifyKernelTraceFuncs(const char* funcs) { std::string buf; - if (!android::base::ReadFileToString(k_ftraceFilterPath, &buf)) { + if (!android::base::ReadFileToString(g_traceFolder + k_ftraceFilterPath, &buf)) { fprintf(stderr, "error opening %s: %s (%d)\n", k_ftraceFilterPath, strerror(errno), errno); return false; @@ -873,7 +875,7 @@ static void stopTrace() static void streamTrace() { char trace_data[4096]; - int traceFD = open(k_traceStreamPath, O_RDWR); + int traceFD = open((g_traceFolder + k_traceStreamPath).c_str(), O_RDWR); if (traceFD == -1) { fprintf(stderr, "error opening %s: %s (%d)\n", k_traceStreamPath, strerror(errno), errno); @@ -898,7 +900,7 @@ static void streamTrace() static void dumpTrace(int outFd) { ALOGI("Dumping trace"); - int traceFD = open(k_tracePath, O_RDWR); + int traceFD = open((g_traceFolder + k_tracePath).c_str(), O_RDWR); if (traceFD == -1) { fprintf(stderr, "error opening %s: %s (%d)\n", k_tracePath, strerror(errno), errno); @@ -1053,6 +1055,29 @@ static void showHelp(const char *cmd) ); } +bool findTraceFiles() +{ + static const std::string debugfs_path = "/sys/kernel/debug/tracing/"; + static const std::string tracefs_path = "/sys/kernel/tracing/"; + static const std::string trace_file = "trace_marker"; + + bool tracefs = access((tracefs_path + trace_file).c_str(), F_OK) != -1; + bool debugfs = access((debugfs_path + trace_file).c_str(), F_OK) != -1; + + if (!tracefs && !debugfs) { + fprintf(stderr, "Error: Did not find trace folder\n"); + return false; + } + + if (tracefs) { + g_traceFolder = tracefs_path; + } else { + g_traceFolder = debugfs_path; + } + + return true; +} + int main(int argc, char **argv) { bool async = false; @@ -1066,6 +1091,11 @@ int main(int argc, char **argv) exit(0); } + if (!findTraceFiles()) { + fprintf(stderr, "No trace folder found\n"); + exit(-1); + } + for (;;) { int ret; int option_index = 0; diff --git a/cmds/atrace/atrace.rc b/cmds/atrace/atrace.rc index 54ba5cacf9..cef41bebf4 100644 --- a/cmds/atrace/atrace.rc +++ b/cmds/atrace/atrace.rc @@ -4,72 +4,131 @@ on post-fs # Allow writing to the kernel trace log. chmod 0222 /sys/kernel/debug/tracing/trace_marker + chmod 0222 /sys/kernel/tracing/trace_marker # Allow the shell group to enable (some) kernel tracing. chown root shell /sys/kernel/debug/tracing/trace_clock + chown root shell /sys/kernel/tracing/trace_clock chown root shell /sys/kernel/debug/tracing/buffer_size_kb + chown root shell /sys/kernel/tracing/buffer_size_kb chown root shell /sys/kernel/debug/tracing/options/overwrite + chown root shell /sys/kernel/tracing/options/overwrite chown root shell /sys/kernel/debug/tracing/options/print-tgid + chown root shell /sys/kernel/tracing/options/print-tgid chown root shell /sys/kernel/debug/tracing/events/sched/sched_switch/enable + chown root shell /sys/kernel/tracing/events/sched/sched_switch/enable chown root shell /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable + chown root shell /sys/kernel/tracing/events/sched/sched_wakeup/enable chown root shell /sys/kernel/debug/tracing/events/sched/sched_blocked_reason/enable + chown root shell /sys/kernel/tracing/events/sched/sched_blocked_reason/enable chown root shell /sys/kernel/debug/tracing/events/sched/sched_cpu_hotplug/enable + chown root shell /sys/kernel/tracing/events/sched/sched_cpu_hotplug/enable chown root shell /sys/kernel/debug/tracing/events/power/cpu_frequency/enable + chown root shell /sys/kernel/tracing/events/power/cpu_frequency/enable chown root shell /sys/kernel/debug/tracing/events/power/cpu_idle/enable + chown root shell /sys/kernel/tracing/events/power/cpu_idle/enable chown root shell /sys/kernel/debug/tracing/events/power/clock_set_rate/enable + chown root shell /sys/kernel/tracing/events/power/clock_set_rate/enable chown root shell /sys/kernel/debug/tracing/events/power/cpu_frequency_limits/enable + chown root shell /sys/kernel/tracing/events/power/cpu_frequency_limits/enable chown root shell /sys/kernel/debug/tracing/events/cpufreq_interactive/enable + chown root shell /sys/kernel/tracing/events/cpufreq_interactive/enable chown root shell /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_direct_reclaim_begin/enable + chown root shell /sys/kernel/tracing/events/vmscan/mm_vmscan_direct_reclaim_begin/enable chown root shell /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_direct_reclaim_end/enable + chown root shell /sys/kernel/tracing/events/vmscan/mm_vmscan_direct_reclaim_end/enable chown root shell /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_kswapd_wake/enable + chown root shell /sys/kernel/tracing/events/vmscan/mm_vmscan_kswapd_wake/enable chown root shell /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_kswapd_sleep/enable + chown root shell /sys/kernel/tracing/events/vmscan/mm_vmscan_kswapd_sleep/enable chown root shell /sys/kernel/debug/tracing/events/binder/binder_transaction/enable + chown root shell /sys/kernel/tracing/events/binder/binder_transaction/enable chown root shell /sys/kernel/debug/tracing/events/binder/binder_transaction_received/enable + chown root shell /sys/kernel/tracing/events/binder/binder_transaction_received/enable chown root shell /sys/kernel/debug/tracing/events/binder/binder_lock/enable + chown root shell /sys/kernel/tracing/events/binder/binder_lock/enable chown root shell /sys/kernel/debug/tracing/events/binder/binder_locked/enable + chown root shell /sys/kernel/tracing/events/binder/binder_locked/enable chown root shell /sys/kernel/debug/tracing/events/binder/binder_unlock/enable + chown root shell /sys/kernel/tracing/events/binder/binder_unlock/enable chown root shell /sys/kernel/debug/tracing/tracing_on + chown root shell /sys/kernel/tracing/tracing_on chmod 0664 /sys/kernel/debug/tracing/trace_clock + chmod 0664 /sys/kernel/tracing/trace_clock chmod 0664 /sys/kernel/debug/tracing/buffer_size_kb + chmod 0664 /sys/kernel/tracing/buffer_size_kb chmod 0664 /sys/kernel/debug/tracing/options/overwrite + chmod 0664 /sys/kernel/tracing/options/overwrite chmod 0664 /sys/kernel/debug/tracing/options/print-tgid + chmod 0664 /sys/kernel/tracing/options/print-tgid chmod 0664 /sys/kernel/debug/tracing/events/sched/sched_switch/enable + chmod 0664 /sys/kernel/tracing/events/sched/sched_switch/enable chmod 0664 /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable + chmod 0664 /sys/kernel/tracing/events/sched/sched_wakeup/enable chmod 0664 /sys/kernel/debug/tracing/events/sched/sched_blocked_reason/enable + chmod 0664 /sys/kernel/tracing/events/sched/sched_blocked_reason/enable chmod 0664 /sys/kernel/debug/tracing/events/sched/sched_cpu_hotplug/enable + chmod 0664 /sys/kernel/tracing/events/sched/sched_cpu_hotplug/enable chmod 0664 /sys/kernel/debug/tracing/events/power/cpu_frequency/enable + chmod 0664 /sys/kernel/tracing/events/power/cpu_frequency/enable chmod 0664 /sys/kernel/debug/tracing/events/power/cpu_idle/enable + chmod 0664 /sys/kernel/tracing/events/power/cpu_idle/enable chmod 0664 /sys/kernel/debug/tracing/events/power/clock_set_rate/enable + chmod 0664 /sys/kernel/tracing/events/power/clock_set_rate/enable chmod 0664 /sys/kernel/debug/tracing/events/power/cpu_frequency_limits/enable + chmod 0664 /sys/kernel/tracing/events/power/cpu_frequency_limits/enable chmod 0664 /sys/kernel/debug/tracing/events/cpufreq_interactive/enable + chmod 0664 /sys/kernel/tracing/events/cpufreq_interactive/enable chmod 0664 /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_direct_reclaim_begin/enable + chmod 0664 /sys/kernel/tracing/events/vmscan/mm_vmscan_direct_reclaim_begin/enable chmod 0664 /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_direct_reclaim_end/enable + chmod 0664 /sys/kernel/tracing/events/vmscan/mm_vmscan_direct_reclaim_end/enable chmod 0664 /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_kswapd_wake/enable + chmod 0664 /sys/kernel/tracing/events/vmscan/mm_vmscan_kswapd_wake/enable chmod 0664 /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_kswapd_sleep/enable + chmod 0664 /sys/kernel/tracing/events/vmscan/mm_vmscan_kswapd_sleep/enable chmod 0664 /sys/kernel/debug/tracing/tracing_on + chmod 0664 /sys/kernel/tracing/tracing_on chmod 0664 /sys/kernel/debug/tracing/events/binder/binder_transaction/enable + chmod 0664 /sys/kernel/tracing/events/binder/binder_transaction/enable chmod 0664 /sys/kernel/debug/tracing/events/binder/binder_transaction_received/enable + chmod 0664 /sys/kernel/tracing/events/binder/binder_transaction_received/enable chmod 0664 /sys/kernel/debug/tracing/events/binder/binder_lock/enable + chmod 0664 /sys/kernel/tracing/events/binder/binder_lock/enable chmod 0664 /sys/kernel/debug/tracing/events/binder/binder_locked/enable + chmod 0664 /sys/kernel/tracing/events/binder/binder_locked/enable chmod 0664 /sys/kernel/debug/tracing/events/binder/binder_unlock/enable + chmod 0664 /sys/kernel/tracing/events/binder/binder_unlock/enable chmod 0664 /sys/kernel/debug/tracing/events/i2c/enable + chmod 0664 /sys/kernel/tracing/events/i2c/enable chmod 0664 /sys/kernel/debug/tracing/events/i2c/i2c_read/enable + chmod 0664 /sys/kernel/tracing/events/i2c/i2c_read/enable chmod 0664 /sys/kernel/debug/tracing/events/i2c/i2c_write/enable + chmod 0664 /sys/kernel/tracing/events/i2c/i2c_write/enable chmod 0664 /sys/kernel/debug/tracing/events/i2c/i2c_result/enable + chmod 0664 /sys/kernel/tracing/events/i2c/i2c_result/enable chmod 0664 /sys/kernel/debug/tracing/events/i2c/i2c_reply/enable + chmod 0664 /sys/kernel/tracing/events/i2c/i2c_reply/enable chmod 0664 /sys/kernel/debug/tracing/events/i2c/smbus_read/enable + chmod 0664 /sys/kernel/tracing/events/i2c/smbus_read/enable chmod 0664 /sys/kernel/debug/tracing/events/i2c/smbus_write/enable + chmod 0664 /sys/kernel/tracing/events/i2c/smbus_write/enable chmod 0664 /sys/kernel/debug/tracing/events/i2c/smbus_result/enable + chmod 0664 /sys/kernel/tracing/events/i2c/smbus_result/enable chmod 0664 /sys/kernel/debug/tracing/events/i2c/smbus_reply/enable + chmod 0664 /sys/kernel/tracing/events/i2c/smbus_reply/enable # Tracing disabled by default write /sys/kernel/debug/tracing/tracing_on 0 + write /sys/kernel/tracing/tracing_on 0 # Allow only the shell group to read and truncate the kernel trace. chown root shell /sys/kernel/debug/tracing/trace + chown root shell /sys/kernel/tracing/trace chmod 0660 /sys/kernel/debug/tracing/trace + chmod 0660 /sys/kernel/tracing/trace on property:persist.debug.atrace.boottrace=1 start boottrace |