# Policy for /system/bin/pm-service
type per_mgr, domain;
type per_mgr_exec, exec_type, file_type;

allow per_mgr self:capability net_bind_service;

init_daemon_domain(per_mgr)

allow per_mgr per_mgr_service:service_manager add;

binder_use(per_mgr)
binder_call(per_mgr, system_server)
binder_call(per_mgr, rild)
binder_call(per_mgr, per_proxy)

allow per_mgr firmware_file:dir search;
allow per_mgr firmware_file:file r_file_perms;
allow per_mgr self:socket create_socket_perms;
allowxperm per_mgr self:socket ioctl msm_sock_ipc_ioctls;
allow per_mgr ssr_device:chr_file { open read };

allow per_mgr sysfs:dir r_dir_perms;

r_dir_file(per_mgr, sysfs_msm_subsys)

userdebug_or_eng(`
  allow rild ssr_device:chr_file { open read };
')
