# communicate with perfd
allow cameraserver perfd_data_file:dir search;
allow cameraserver perfd:unix_stream_socket connectto;
allow cameraserver perfd_data_file:sock_file write;

# communicate with camera
allow cameraserver camera:unix_dgram_socket sendto;
allow cameraserver camera_data_file:sock_file write;
allow cameraserver camera_device:chr_file rw_file_perms;

allow cameraserver gpu_device:chr_file rw_file_perms;

# access to /dev/input/event{5,10}
allow cameraserver input_device:dir r_dir_perms;
allow cameraserver input_device:chr_file r_file_perms;

set_prop(cameraserver, camera_prop)

allow cameraserver sysfs_enable_ps_sensor:file w_file_perms;
r_dir_file(cameraserver, sysfs_type)
# find libraries
allow cameraserver system_file:dir r_dir_perms;

# talk to system_server
allow cameraserver system_server:unix_stream_socket { read write };

allow cameraserver sensorservice_service:service_manager find;

allow cameraserver self:socket { create ioctl read write };

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

# allow cameraserver to call some socket ioctls
allowxperm cameraserver self:socket ioctl { IPC_ROUTER_IOCTL_LOOKUP_SERVER IPC_ROUTER_IOCTL_BIND_CONTROL_PORT };

