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

# At a minimum, used for GPS (b/32290392)
allow system_server self:socket ioctl; # create already in core policy
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 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)

# interact with thermal_config
set_prop(system_server, thermal_prop)

# rpm
r_dir_file(system_server, debugfs_rpm)

# kgsl
allow system_server debugfs_kgsl:file { open read getattr };

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