Enable tracing on user builds
This change adds init.rc steps to:
* allow kernel tracing to be enabled via adb
* allow a limited set of kernel trace events to be enabled via adb
* allow the kernel trace to be read via adb
* allow all users to write to the kernel trace from userland
Bug: 6513400
Change-Id: Ic3c189b5697aa5edf88d2f507c932971bed6caff
diff --git a/rootdir/init.rc b/rootdir/init.rc
index aa1bb92..ef1dc3d 100644
--- a/rootdir/init.rc
+++ b/rootdir/init.rc
@@ -6,6 +6,7 @@
import /init.${ro.hardware}.rc
import /init.usb.rc
+import /init.trace.rc
on early-init
# Set init and its forked children's oom_adj.
@@ -367,10 +368,6 @@
on property:ro.debuggable=1
start console
-# Allow writing to the kernel trace log. Enabling tracing still requires root.
-on property:ro.debuggable=1
- chmod 0222 /sys/kernel/debug/tracing/trace_marker
-
# adbd is controlled via property triggers in init.<platform>.usb.rc
service adbd /sbin/adbd
class core
@@ -505,4 +502,3 @@
socket mdnsd stream 0660 mdnsr inet
disabled
oneshot
-
diff --git a/rootdir/init.trace.rc b/rootdir/init.trace.rc
new file mode 100644
index 0000000..1d114f5
--- /dev/null
+++ b/rootdir/init.trace.rc
@@ -0,0 +1,31 @@
+## Permissions to allow system-wide tracing to the kernel trace buffer.
+##
+on boot
+
+# Allow writing to the kernel trace log.
+ chmod 0222 /sys/kernel/debug/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/debug/tracing/buffer_size_kb
+ chown root shell /sys/kernel/debug/tracing/options/overwrite
+ chown root shell /sys/kernel/debug/tracing/events/sched/sched_switch/enable
+ chown root shell /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable
+ chown root shell /sys/kernel/debug/tracing/events/power/cpu_frequency/enable
+ chown root shell /sys/kernel/debug/tracing/events/power/cpu_idle/enable
+ chown root shell /sys/kernel/debug/tracing/events/cpufreq_interactive/enable
+ chown root shell /sys/kernel/debug/tracing/tracing_on
+
+ chmod 0664 /sys/kernel/debug/tracing/trace_clock
+ chmod 0664 /sys/kernel/debug/tracing/buffer_size_kb
+ chmod 0664 /sys/kernel/debug/tracing/options/overwrite
+ chmod 0664 /sys/kernel/debug/tracing/events/sched/sched_switch/enable
+ chmod 0664 /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable
+ chmod 0664 /sys/kernel/debug/tracing/events/power/cpu_frequency/enable
+ chmod 0664 /sys/kernel/debug/tracing/events/power/cpu_idle/enable
+ chmod 0664 /sys/kernel/debug/tracing/events/cpufreq_interactive/enable
+ chmod 0664 /sys/kernel/debug/tracing/tracing_on
+
+# Allow only the shell group to read and truncate the kernel trace.
+ chown root shell /sys/kernel/debug/tracing/trace
+ chmod 0660 /sys/kernel/debug/tracing/trace