## Permissions to allow system-wide tracing to the kernel trace buffer.
##
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/saved_cmdlines_size
    chown root shell /sys/kernel/tracing/saved_cmdlines_size
    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/saved_cmdlines_size
    chmod 0664 /sys/kernel/tracing/saved_cmdlines_size
    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

# Run atrace with the categories written in a file
service boottrace /system/bin/atrace --async_start -f /data/misc/boottrace/categories
    disabled
    oneshot
