# Policy for pm-service and pm-proxy
type per_mgr, domain;
type per_mgr_exec, exec_type, vendor_file_type, file_type;

init_daemon_domain(per_mgr);

add_service(per_mgr, per_mgr_service)

vndbinder_use(per_mgr)
binder_call(per_mgr, hal_gnss)
binder_call(per_mgr, per_proxy)
binder_call(per_mgr, wcnss_service)
binder_call(per_mgr, rild)

allow per_mgr self:capability net_bind_service;

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 };

r_dir_file(per_mgr, sysfs_msm_subsys)
r_dir_file(per_mgr, sysfs)

set_prop(per_mgr, per_mgr_state_prop)

dontaudit per_mgr kernel:system module_request;
