# in addition to ioctl commands granted to domain allow system_server to use:
allowxperm system_server self:udp_socket ioctl priv_sock_ioctls;
allowxperm system_server self:socket ioctl msm_sock_ipc_ioctls;

# Grant access to Qualcomm MSM Interface (QMI) radio sockets
qmux_socket(system_server)

# /dev/uhid
allow system_server uhid_device:chr_file rw_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;

allow system_server location:unix_stream_socket connectto;
allow system_server location_data_file:sock_file write;

allow system_server netmgrd_socket:dir search;
unix_socket_connect(system_server, netmgrd, netmgrd)

# talk to peripheral manager
allow system_server per_mgr_service:service_manager find;
binder_call(system_server, per_mgr)

# files in /sys
r_dir_file(system_server, sysfs_type)

# write to files owned by location daemon
allow system_server location_data_file:dir create_dir_perms;
allow system_server location_data_file:{ file fifo_file } create_file_perms;

# read sensor calibration data
allow system_server persist_file:dir search;
allow system_server persist_file:file r_file_perms;
set_prop(system_server, sensors_prop)

# interact with thermal_config
allow system_server thermal-engine:unix_stream_socket connectto;
allow system_server thermal_socket:sock_file write;

userdebug_or_eng(`
  allow system_server diag_device:chr_file rw_file_perms;
')
