# Grant access to Qualcomm MSM Interface (QMI) radio sockets to system services
# (e.g., LocationManager)
qmux_socket(system_server)

allow system_server self:netlink_socket create_socket_perms;

allow system_server per_mgr_service:service_manager find;

# Fingerprint access
allow system_server fingerprint_device:chr_file rw_file_perms;

#Needed by libmdmdetect to get subsystem info and to check their states
allow system_server sysfs_ssr:dir r_dir_perms;
allow system_server sysfs_ssr:lnk_file r_file_perms;

# Needed by hubconnection for sensor hub
allow system_server sensors_device:chr_file rw_file_perms;
allow system_server uhid_device:chr_file rw_file_perms;
allow system_server persist_file:dir search;
allow system_server persist_sensortool_file:file r_file_perms;

# For location
allow system_server location:unix_stream_socket connectto;
allow system_server location_data_file:{ file fifo_file } create_file_perms;
allow system_server location_data_file:dir rw_dir_perms;
allow system_server location_data_file:sock_file create_file_perms;

# talk to perfd
allow system_server perfd_data_file:dir search;
allow system_server perfd_data_file:sock_file write;
allow system_server perfd:unix_stream_socket connectto;

# hubconnection to get and set sensors.contexthub.* properties
set_prop(system_server, contexthub_prop);

# To improve app launch times - we would like to force all tasks to
# run on big cores for app launch (sched_boost) - instead of just
# boosting them to make it "more likely" to run on big cores.
allow system_server zygote:process setsched;
