# bootstat command
type bootstat, domain;
type bootstat_exec, exec_type, file_type;

read_runtime_log_tags(bootstat)

# Allow persistent storage in /data/misc/bootstat.
allow bootstat bootstat_data_file:dir rw_dir_perms;
allow bootstat bootstat_data_file:file create_file_perms;

# Read access to pseudo filesystems (for /proc/uptime).
r_dir_file(bootstat, proc)

# Collect metrics on boot time created by init
get_prop(bootstat, boottime_prop)

# Read/Write [persist.]sys.boot.reason and ro.boot.bootreason (write if empty)
set_prop(bootstat, bootloader_boot_reason_prop)
set_prop(bootstat, system_boot_reason_prop)
set_prop(bootstat, last_boot_reason_prop)

# ToDo: TBI move access for the following to a system health HAL

# Allow access to /sys/fs/pstore/ and syslog
allow bootstat pstorefs:dir search;
allow bootstat pstorefs:file r_file_perms;
allow bootstat kernel:system syslog_read;

# Allow access to reading the logs to read aspects of system health
read_logd(bootstat)

# ToDo: end
