Merge "Add 'exclude parent' option to debug."
diff --git a/cmds/atrace/atrace.rc b/cmds/atrace/atrace.rc
index 3ea1d56..89ce1e5 100644
--- a/cmds/atrace/atrace.rc
+++ b/cmds/atrace/atrace.rc
@@ -6,141 +6,86 @@
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/cgroup/enable
- chown root shell /sys/kernel/tracing/events/cgroup/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/events/lowmemorykiller/enable
- chown root shell /sys/kernel/tracing/events/lowmemorykiller/enable
+# Grant unix world read/write permissions to kernel tracepoints.
+# Access control to these files is now entirely in selinux policy.
+ chmod 0666 /sys/kernel/debug/tracing/trace_clock
+ chmod 0666 /sys/kernel/tracing/trace_clock
+ chmod 0666 /sys/kernel/debug/tracing/buffer_size_kb
+ chmod 0666 /sys/kernel/tracing/buffer_size_kb
+ chmod 0666 /sys/kernel/debug/tracing/options/overwrite
+ chmod 0666 /sys/kernel/tracing/options/overwrite
+ chmod 0666 /sys/kernel/debug/tracing/options/print-tgid
+ chmod 0666 /sys/kernel/tracing/options/print-tgid
+ chmod 0666 /sys/kernel/debug/tracing/saved_cmdlines_size
+ chmod 0666 /sys/kernel/tracing/saved_cmdlines_size
+ chmod 0666 /sys/kernel/debug/tracing/events/sched/sched_switch/enable
+ chmod 0666 /sys/kernel/tracing/events/sched/sched_switch/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/sched/sched_wakeup/enable
+ chmod 0666 /sys/kernel/tracing/events/sched/sched_wakeup/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/sched/sched_blocked_reason/enable
+ chmod 0666 /sys/kernel/tracing/events/sched/sched_blocked_reason/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/sched/sched_cpu_hotplug/enable
+ chmod 0666 /sys/kernel/tracing/events/sched/sched_cpu_hotplug/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/cgroup/enable
+ chmod 0666 /sys/kernel/tracing/events/cgroup/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/power/cpu_frequency/enable
+ chmod 0666 /sys/kernel/tracing/events/power/cpu_frequency/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/power/cpu_idle/enable
+ chmod 0666 /sys/kernel/tracing/events/power/cpu_idle/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/power/clock_set_rate/enable
+ chmod 0666 /sys/kernel/tracing/events/power/clock_set_rate/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/power/cpu_frequency_limits/enable
+ chmod 0666 /sys/kernel/tracing/events/power/cpu_frequency_limits/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/cpufreq_interactive/enable
+ chmod 0666 /sys/kernel/tracing/events/cpufreq_interactive/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_direct_reclaim_begin/enable
+ chmod 0666 /sys/kernel/tracing/events/vmscan/mm_vmscan_direct_reclaim_begin/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_direct_reclaim_end/enable
+ chmod 0666 /sys/kernel/tracing/events/vmscan/mm_vmscan_direct_reclaim_end/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_kswapd_wake/enable
+ chmod 0666 /sys/kernel/tracing/events/vmscan/mm_vmscan_kswapd_wake/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/vmscan/mm_vmscan_kswapd_sleep/enable
+ chmod 0666 /sys/kernel/tracing/events/vmscan/mm_vmscan_kswapd_sleep/enable
+ chmod 0666 /sys/kernel/debug/tracing/tracing_on
+ chmod 0666 /sys/kernel/tracing/tracing_on
+ chmod 0666 /sys/kernel/debug/tracing/events/binder/binder_transaction/enable
+ chmod 0666 /sys/kernel/tracing/events/binder/binder_transaction/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/binder/binder_transaction_received/enable
+ chmod 0666 /sys/kernel/tracing/events/binder/binder_transaction_received/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/binder/binder_lock/enable
+ chmod 0666 /sys/kernel/tracing/events/binder/binder_lock/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/binder/binder_locked/enable
+ chmod 0666 /sys/kernel/tracing/events/binder/binder_locked/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/binder/binder_unlock/enable
+ chmod 0666 /sys/kernel/tracing/events/binder/binder_unlock/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/i2c/enable
+ chmod 0666 /sys/kernel/tracing/events/i2c/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/i2c/i2c_read/enable
+ chmod 0666 /sys/kernel/tracing/events/i2c/i2c_read/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/i2c/i2c_write/enable
+ chmod 0666 /sys/kernel/tracing/events/i2c/i2c_write/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/i2c/i2c_result/enable
+ chmod 0666 /sys/kernel/tracing/events/i2c/i2c_result/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/i2c/i2c_reply/enable
+ chmod 0666 /sys/kernel/tracing/events/i2c/i2c_reply/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/i2c/smbus_read/enable
+ chmod 0666 /sys/kernel/tracing/events/i2c/smbus_read/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/i2c/smbus_write/enable
+ chmod 0666 /sys/kernel/tracing/events/i2c/smbus_write/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/i2c/smbus_result/enable
+ chmod 0666 /sys/kernel/tracing/events/i2c/smbus_result/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/i2c/smbus_reply/enable
+ chmod 0666 /sys/kernel/tracing/events/i2c/smbus_reply/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/lowmemorykiller/enable
+ chmod 0666 /sys/kernel/tracing/events/lowmemorykiller/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/cgroup/enable
- chmod 0664 /sys/kernel/tracing/events/cgroup/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
- chmod 0664 /sys/kernel/debug/tracing/events/lowmemorykiller/enable
- chmod 0664 /sys/kernel/tracing/events/lowmemorykiller/enable
-
- # Tracing disabled by default
+# 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
+# Read and truncate the kernel trace.
+ chmod 0666 /sys/kernel/debug/tracing/trace
+ chmod 0666 /sys/kernel/tracing/trace
on property:persist.debug.atrace.boottrace=1
start boottrace
diff --git a/cmds/atrace/atrace_userdebug.rc b/cmds/atrace/atrace_userdebug.rc
index 5fd28e2..9d632cc 100644
--- a/cmds/atrace/atrace_userdebug.rc
+++ b/cmds/atrace/atrace_userdebug.rc
@@ -1,47 +1,43 @@
## Permissions to allow additional system-wide tracing to the kernel trace buffer.
## The default list of permissions is set in frameworks/native/cmds/atrace/atrace.rc
-# Allow the shell group to enable kernel tracepoints:
+# Grant unix world read/write permissions to enable kernel tracepoints.
+# Access control to these files is now entirely in selinux policy.
on post-fs
- chown root shell /sys/kernel/debug/tracing/events/sync/enable
- chown root shell /sys/kernel/debug/tracing/events/workqueue/enable
- chown root shell /sys/kernel/debug/tracing/events/regulator/enable
- chown root shell /sys/kernel/debug/tracing/events/pagecache/enable
+ chmod 0666 /sys/kernel/tracing/events/sync/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/sync/enable
+ chmod 0666 /sys/kernel/tracing/events/workqueue/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/workqueue/enable
+ chmod 0666 /sys/kernel/tracing/events/regulator/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/regulator/enable
+ chmod 0666 /sys/kernel/tracing/events/pagecache/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/pagecache/enable
# irq
- chown root shell /sys/kernel/debug/tracing/events/irq/enable
- chown root shell /sys/kernel/debug/tracing/events/ipi/enable
+ chmod 0666 /sys/kernel/tracing/events/irq/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/irq/enable
+ chmod 0666 /sys/kernel/tracing/events/ipi/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/ipi/enable
# disk
- chown root shell /sys/kernel/debug/tracing/events/f2fs/f2fs_sync_file_enter/enable
- chown root shell /sys/kernel/debug/tracing/events/f2fs/f2fs_sync_file_exit/enable
- chown root shell /sys/kernel/debug/tracing/events/f2fs/f2fs_write_begin/enable
- chown root shell /sys/kernel/debug/tracing/events/f2fs/f2fs_write_end/enable
- chown root shell /sys/kernel/debug/tracing/events/ext4/ext4_da_write_begin/enable
- chown root shell /sys/kernel/debug/tracing/events/ext4/ext4_da_write_end/enable
- chown root shell /sys/kernel/debug/tracing/events/ext4/ext4_sync_file_enter/enable
- chown root shell /sys/kernel/debug/tracing/events/ext4/ext4_sync_file_exit/enable
- chown root shell /sys/kernel/debug/tracing/events/block/block_rq_issue/enable
- chown root shell /sys/kernel/debug/tracing/events/block/block_rq_complete/enable
-
- chmod 0664 /sys/kernel/debug/tracing/events/sync/enable
- chmod 0664 /sys/kernel/debug/tracing/events/workqueue/enable
- chmod 0664 /sys/kernel/debug/tracing/events/regulator/enable
- chmod 0664 /sys/kernel/debug/tracing/events/pagecache/enable
-
- # irq
- chmod 0664 /sys/kernel/debug/tracing/events/irq/enable
- chmod 0664 /sys/kernel/debug/tracing/events/ipi/enable
-
- # disk
- chmod 0664 /sys/kernel/debug/tracing/events/f2fs/f2fs_sync_file_enter/enable
- chmod 0664 /sys/kernel/debug/tracing/events/f2fs/f2fs_sync_file_exit/enable
- chmod 0664 /sys/kernel/debug/tracing/events/f2fs/f2fs_write_begin/enable
- chmod 0664 /sys/kernel/debug/tracing/events/f2fs/f2fs_write_end/enable
- chmod 0664 /sys/kernel/debug/tracing/events/ext4/ext4_da_write_begin/enable
- chmod 0664 /sys/kernel/debug/tracing/events/ext4/ext4_da_write_end/enable
- chmod 0664 /sys/kernel/debug/tracing/events/ext4/ext4_sync_file_enter/enable
- chmod 0664 /sys/kernel/debug/tracing/events/ext4/ext4_sync_file_exit/enable
- chmod 0664 /sys/kernel/debug/tracing/events/block/block_rq_issue/enable
- chmod 0664 /sys/kernel/debug/tracing/events/block/block_rq_complete/enable
+ chmod 0666 /sys/kernel/tracing/events/f2fs/f2fs_sync_file_enter/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/f2fs/f2fs_sync_file_enter/enable
+ chmod 0666 /sys/kernel/tracing/events/f2fs/f2fs_sync_file_exit/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/f2fs/f2fs_sync_file_exit/enable
+ chmod 0666 /sys/kernel/tracing/events/f2fs/f2fs_write_begin/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/f2fs/f2fs_write_begin/enable
+ chmod 0666 /sys/kernel/tracing/events/f2fs/f2fs_write_end/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/f2fs/f2fs_write_end/enable
+ chmod 0666 /sys/kernel/tracing/events/ext4/ext4_da_write_begin/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/ext4/ext4_da_write_begin/enable
+ chmod 0666 /sys/kernel/tracing/events/ext4/ext4_da_write_end/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/ext4/ext4_da_write_end/enable
+ chmod 0666 /sys/kernel/tracing/events/ext4/ext4_sync_file_enter/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/ext4/ext4_sync_file_enter/enable
+ chmod 0666 /sys/kernel/tracing/events/ext4/ext4_sync_file_exit/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/ext4/ext4_sync_file_exit/enable
+ chmod 0666 /sys/kernel/tracing/events/block/block_rq_issue/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/block/block_rq_issue/enable
+ chmod 0666 /sys/kernel/tracing/events/block/block_rq_complete/enable
+ chmod 0666 /sys/kernel/debug/tracing/events/block/block_rq_complete/enable
diff --git a/cmds/dumpstate/utils.cpp b/cmds/dumpstate/utils.cpp
index a96a69d..233bc3e 100644
--- a/cmds/dumpstate/utils.cpp
+++ b/cmds/dumpstate/utils.cpp
@@ -84,6 +84,7 @@
"/system/bin/drmserver",
"/system/bin/mediadrmserver",
"/system/bin/mediaextractor", // media.extractor
+ "/system/bin/mediametrics", // media.metrics
"/system/bin/mediaserver",
"/system/bin/sdcard",
"/system/bin/surfaceflinger",
diff --git a/cmds/installd/InstalldNativeService.cpp b/cmds/installd/InstalldNativeService.cpp
index db1d4a3..b0661c5 100644
--- a/cmds/installd/InstalldNativeService.cpp
+++ b/cmds/installd/InstalldNativeService.cpp
@@ -1894,7 +1894,7 @@
int32_t dexoptNeeded, const std::unique_ptr<std::string>& outputPath, int32_t dexFlags,
const std::string& compilerFilter, const std::unique_ptr<std::string>& uuid,
const std::unique_ptr<std::string>& classLoaderContext,
- const std::unique_ptr<std::string>& seInfo, bool downgrade) {
+ const std::unique_ptr<std::string>& seInfo, bool downgrade, int32_t targetSdkVersion) {
ENFORCE_UID(AID_SYSTEM);
CHECK_ARGUMENT_UUID(uuid);
if (packageName && *packageName != "*") {
@@ -1912,7 +1912,7 @@
const char* se_info = seInfo ? seInfo->c_str() : nullptr;
int res = android::installd::dexopt(apk_path, uid, pkgname, instruction_set, dexoptNeeded,
oat_dir, dexFlags, compiler_filter, volume_uuid, class_loader_context, se_info,
- downgrade);
+ downgrade, targetSdkVersion);
return res ? error(res, "Failed to dexopt") : ok();
}
diff --git a/cmds/installd/InstalldNativeService.h b/cmds/installd/InstalldNativeService.h
index e9e5ffc..93b59ed 100644
--- a/cmds/installd/InstalldNativeService.h
+++ b/cmds/installd/InstalldNativeService.h
@@ -84,7 +84,8 @@
int32_t dexoptNeeded, const std::unique_ptr<std::string>& outputPath, int32_t dexFlags,
const std::string& compilerFilter, const std::unique_ptr<std::string>& uuid,
const std::unique_ptr<std::string>& classLoaderContext,
- const std::unique_ptr<std::string>& seInfo, bool downgrade);
+ const std::unique_ptr<std::string>& seInfo, bool downgrade,
+ int32_t targetSdkVersion);
binder::Status rmdex(const std::string& codePath, const std::string& instructionSet);
diff --git a/cmds/installd/binder/android/os/IInstalld.aidl b/cmds/installd/binder/android/os/IInstalld.aidl
index c1a233b..2c9c6bd 100644
--- a/cmds/installd/binder/android/os/IInstalld.aidl
+++ b/cmds/installd/binder/android/os/IInstalld.aidl
@@ -51,7 +51,7 @@
@nullable @utf8InCpp String outputPath, int dexFlags,
@utf8InCpp String compilerFilter, @nullable @utf8InCpp String uuid,
@nullable @utf8InCpp String sharedLibraries,
- @nullable @utf8InCpp String seInfo, boolean downgrade);
+ @nullable @utf8InCpp String seInfo, boolean downgrade, int targetSdkVersion);
void rmdex(@utf8InCpp String codePath, @utf8InCpp String instructionSet);
diff --git a/cmds/installd/dexopt.cpp b/cmds/installd/dexopt.cpp
index 6c069b2..25b6f64 100644
--- a/cmds/installd/dexopt.cpp
+++ b/cmds/installd/dexopt.cpp
@@ -212,7 +212,7 @@
const char* input_file_name, const char* output_file_name, int swap_fd,
const char* instruction_set, const char* compiler_filter,
bool debuggable, bool post_bootcomplete, bool background_job_compile, int profile_fd,
- const char* class_loader_context) {
+ const char* class_loader_context, int target_sdk_version) {
static const unsigned int MAX_INSTRUCTION_SET_LEN = 7;
if (strlen(instruction_set) >= MAX_INSTRUCTION_SET_LEN) {
@@ -323,6 +323,7 @@
bool have_dex2oat_image_fd = false;
char dex2oat_image_fd[arraysize("--app-image-fd=") + MAX_INT_LEN];
size_t class_loader_context_size = arraysize("--class-loader-context=") + PKG_PATH_MAX;
+ char target_sdk_version_arg[arraysize("-Xtarget-sdk-version:") + MAX_INT_LEN];
char class_loader_context_arg[class_loader_context_size];
if (class_loader_context != nullptr) {
snprintf(class_loader_context_arg, class_loader_context_size, "--class-loader-context=%s",
@@ -353,6 +354,7 @@
if (have_dex2oat_Xmx_flag) {
sprintf(dex2oat_Xmx_arg, "-Xmx%s", dex2oat_Xmx_flag);
}
+ sprintf(target_sdk_version_arg, "-Xtarget-sdk-version:%d", target_sdk_version);
// Compute compiler filter.
@@ -435,7 +437,8 @@
+ (has_base_dir ? 1 : 0)
+ (have_dex2oat_large_app_threshold ? 1 : 0)
+ (disable_cdex ? 1 : 0)
- + (generate_minidebug_info ? 1 : 0)];
+ + (generate_minidebug_info ? 1 : 0)
+ + (target_sdk_version != 0 ? 2 : 0)];
int i = 0;
argv[i++] = dex2oat_bin;
argv[i++] = zip_fd_arg;
@@ -505,6 +508,10 @@
if (disable_cdex) {
argv[i++] = kDisableCompactDexFlag;
}
+ if (target_sdk_version != 0) {
+ argv[i++] = RUNTIME_ARG;
+ argv[i++] = target_sdk_version_arg;
+ }
// Do not add after dex2oat_flags, they should override others for debugging.
argv[i] = NULL;
@@ -1767,7 +1774,7 @@
int dexopt(const char* dex_path, uid_t uid, const char* pkgname, const char* instruction_set,
int dexopt_needed, const char* oat_dir, int dexopt_flags, const char* compiler_filter,
const char* volume_uuid, const char* class_loader_context, const char* se_info,
- bool downgrade) {
+ bool downgrade, int target_sdk_version) {
CHECK(pkgname != nullptr);
CHECK(pkgname[0] != 0);
if ((dexopt_flags & ~DEXOPT_MASK) != 0) {
@@ -1884,7 +1891,8 @@
boot_complete,
background_job_compile,
reference_profile_fd.get(),
- class_loader_context);
+ class_loader_context,
+ target_sdk_version);
_exit(68); /* only get here on exec failure */
} else {
int res = wait_child(pid);
diff --git a/cmds/installd/dexopt.h b/cmds/installd/dexopt.h
index 8d81611..4923a43 100644
--- a/cmds/installd/dexopt.h
+++ b/cmds/installd/dexopt.h
@@ -78,7 +78,7 @@
int dexopt(const char *apk_path, uid_t uid, const char *pkgName, const char *instruction_set,
int dexopt_needed, const char* oat_dir, int dexopt_flags, const char* compiler_filter,
const char* volume_uuid, const char* class_loader_context, const char* se_info,
- bool downgrade);
+ bool downgrade, int target_sdk_version);
bool calculate_oat_file_path_default(char path[PKG_PATH_MAX], const char *oat_dir,
const char *apk_path, const char *instruction_set);
diff --git a/cmds/installd/otapreopt.cpp b/cmds/installd/otapreopt.cpp
index 8a56894..3909cb8 100644
--- a/cmds/installd/otapreopt.cpp
+++ b/cmds/installd/otapreopt.cpp
@@ -178,6 +178,7 @@
const char* shared_libraries;
const char* se_info;
bool downgrade;
+ int target_sdk_version;
};
bool ReadSystemProperties() {
@@ -358,6 +359,8 @@
return ReadArgumentsV2(argc, argv, true);
case 3:
return ReadArgumentsV3(argc, argv);
+ case 4:
+ return ReadArgumentsV4(argc, argv);
default:
LOG(ERROR) << "Unsupported version " << version;
@@ -440,6 +443,10 @@
// filter, which is not the case during ota.
package_parameters_.downgrade = false;
+ // Set target_sdk_version to 0, ie the platform SDK version. This is
+ // conservative and may force some classes to verify at runtime.
+ package_parameters_.target_sdk_version = 0;
+
if (param_index != 11) {
LOG(ERROR) << "Not enough parameters";
return false;
@@ -523,6 +530,10 @@
}
}
+ // Set target_sdk_version to 0, ie the platform SDK version. This is
+ // conservative and may force some classes to verify at runtime.
+ package_parameters_.target_sdk_version = 0;
+
if (param_index != 12) {
LOG(ERROR) << "Not enough parameters";
return false;
@@ -531,6 +542,93 @@
return true;
}
+ bool ReadArgumentsV4(int argc ATTRIBUTE_UNUSED, char** argv) {
+ size_t dexopt_index = 3;
+
+ // Check for "dexopt".
+ if (argv[dexopt_index] == nullptr) {
+ LOG(ERROR) << "Missing parameters";
+ return false;
+ }
+ if (std::string("dexopt").compare(argv[dexopt_index]) != 0) {
+ LOG(ERROR) << "Expected \"dexopt\"";
+ return false;
+ }
+
+ size_t param_index = 0;
+ for (;; ++param_index) {
+ const char* param = argv[dexopt_index + 1 + param_index];
+ if (param == nullptr) {
+ break;
+ }
+
+ switch (param_index) {
+ case 0:
+ package_parameters_.apk_path = param;
+ break;
+
+ case 1:
+ package_parameters_.uid = atoi(param);
+ break;
+
+ case 2:
+ package_parameters_.pkgName = param;
+ break;
+
+ case 3:
+ package_parameters_.instruction_set = param;
+ break;
+
+ case 4:
+ package_parameters_.dexopt_needed = atoi(param);
+ break;
+
+ case 5:
+ package_parameters_.oat_dir = param;
+ break;
+
+ case 6:
+ package_parameters_.dexopt_flags = atoi(param);
+ break;
+
+ case 7:
+ package_parameters_.compiler_filter = param;
+ break;
+
+ case 8:
+ package_parameters_.volume_uuid = ParseNull(param);
+ break;
+
+ case 9:
+ package_parameters_.shared_libraries = ParseNull(param);
+ break;
+
+ case 10:
+ package_parameters_.se_info = ParseNull(param);
+ break;
+
+ case 11:
+ package_parameters_.downgrade = ParseBool(param);
+ break;
+
+ case 12:
+ package_parameters_.target_sdk_version = atoi(param);
+ break;
+
+ default:
+ LOG(ERROR) << "Too many arguments, got " << param;
+ return false;
+ }
+ }
+
+ if (param_index != 13) {
+ LOG(ERROR) << "Not enough parameters";
+ return false;
+ }
+
+ return true;
+ }
+
static int ReplaceMask(int input, int old_mask, int new_mask) {
return (input & old_mask) != 0 ? new_mask : 0;
}
@@ -634,6 +732,10 @@
// filter, which is not the case during ota.
package_parameters_.downgrade = false;
+ // Set target_sdk_version to 0, ie the platform SDK version. This is
+ // conservative and may force some classes to verify at runtime.
+ package_parameters_.target_sdk_version = 0;
+
return true;
}
@@ -920,7 +1022,8 @@
package_parameters_.volume_uuid,
package_parameters_.shared_libraries,
package_parameters_.se_info,
- package_parameters_.downgrade);
+ package_parameters_.downgrade,
+ package_parameters_.target_sdk_version);
}
int RunPreopt() {
diff --git a/cmds/installd/otapreopt_chroot.cpp b/cmds/installd/otapreopt_chroot.cpp
index 2030997..c402c3c 100644
--- a/cmds/installd/otapreopt_chroot.cpp
+++ b/cmds/installd/otapreopt_chroot.cpp
@@ -59,6 +59,12 @@
// The file descriptor denoted by status-fd will be closed. The rest of the parameters will
// be passed on to otapreopt in the chroot.
static int otapreopt_chroot(const int argc, char **arg) {
+ // Validate arguments
+ // We need the command, status channel and target slot, at a minimum.
+ if(argc < 3) {
+ PLOG(ERROR) << "Not enough arguments.";
+ exit(208);
+ }
// Close all file descriptors. They are coming from the caller, we do not want to pass them
// on across our fork/exec into a different domain.
// 1) Default descriptors.
diff --git a/cmds/installd/tests/installd_dexopt_test.cpp b/cmds/installd/tests/installd_dexopt_test.cpp
index eaf0aa1..ff29506 100644
--- a/cmds/installd/tests/installd_dexopt_test.cpp
+++ b/cmds/installd/tests/installd_dexopt_test.cpp
@@ -258,6 +258,7 @@
std::unique_ptr<std::string> class_loader_context_ptr(new std::string("&"));
std::unique_ptr<std::string> se_info_ptr(new std::string(se_info_));
bool downgrade = false;
+ int32_t target_sdk_version = 0; // default
binder::Status result = service_->dexopt(path,
uid,
@@ -270,7 +271,8 @@
volume_uuid_,
class_loader_context_ptr,
se_info_ptr,
- downgrade);
+ downgrade,
+ target_sdk_version);
ASSERT_EQ(should_binder_call_succeed, result.isOk());
int expected_access = should_dex_be_compiled ? 0 : -1;
std::string odex = GetSecondaryDexArtifact(path, "odex");
diff --git a/libs/binder/Android.bp b/libs/binder/Android.bp
index c130087..57c8775 100644
--- a/libs/binder/Android.bp
+++ b/libs/binder/Android.bp
@@ -92,6 +92,7 @@
"liblog",
"libcutils",
"libutils",
+ "libutilscallstack",
],
header_libs: [
diff --git a/libs/ui/Android.bp b/libs/ui/Android.bp
index 07aba32..dac9616 100644
--- a/libs/ui/Android.bp
+++ b/libs/ui/Android.bp
@@ -84,6 +84,7 @@
"libhwbinder",
"libsync",
"libutils",
+ "libutilscallstack",
"liblog",
],
diff --git a/opengl/specs/README b/opengl/specs/README
index cba4453..fdafb1b 100644
--- a/opengl/specs/README
+++ b/opengl/specs/README
@@ -24,7 +24,8 @@
0x314A EGL_IMAGE_CROP_RIGHT_ANDROID (EGL_ANDROID_image_crop)
0x314B EGL_IMAGE_CROP_BOTTOM_ANDROID (EGL_ANDROID_image_crop)
0x314C EGL_FRONT_BUFFER_AUTO_REFRESH_ANDROID (EGL_ANDROID_front_buffer_auto_refresh)
-0x314D - 0x314F (unused)
+0x314D EGL_GL_COLORSPACE_DEFAULT_EXT (EGL_EXT_image_gl_colorspace)
+0x314E - 0x314F (unused)
Value Extension
================ ==================================