type system_suspend, domain, coredomain, system_suspend_server, system_suspend_internal_server; type system_suspend_exec, system_file_type, exec_type, file_type; init_daemon_domain(system_suspend) # To serve ISuspendControlService. binder_use(system_suspend) add_service(system_suspend, system_suspend_control_service) # Access to /sys/power/{ wakeup_count, state } suspend interface. allow system_suspend sysfs_power:file rw_file_perms; # Access to wakeup, suspend stats, and wakeup reasons. r_dir_file(system_suspend, sysfs_suspend_stats) r_dir_file(system_suspend, sysfs_wakeup) r_dir_file(system_suspend, sysfs_wakeup_reasons) # To resolve arbitrary sysfs paths from /sys/class/wakeup/* symlinks. allow system_suspend sysfs_type:dir search; # Access to suspend_hal system properties get_prop(system_suspend, suspend_prop) # To call BTAA registered callbacks allow system_suspend bluetooth:binder call; # For adding `dumpsys syspend_control` output to bugreport allow system_suspend dumpstate:fd use; allow system_suspend dumpstate:fifo_file write; neverallow { domain -atrace # tracing -bluetooth # support Bluetooth activity attribution (BTAA) -dumpstate # bug reports -system_suspend # implements system_suspend_control_service -system_server # configures system_suspend via ISuspendControlService -traceur_app # tracing } system_suspend_control_service:service_manager find;