|  | # This file is the LOCAL_INIT_RC file for the bootstat command. | 
|  |  | 
|  | # Mirror bootloader boot reason to system boot reason | 
|  | # ro.boot.bootreason should be set by init already | 
|  | # before post-fs trigger | 
|  | on post-fs && property:ro.boot.bootreason=* | 
|  | setprop sys.boot.reason ${ro.boot.bootreason} | 
|  |  | 
|  | on post-fs-data | 
|  | mkdir /data/misc/bootstat 0700 system log | 
|  | # To deal with ota transition resulting from a change in DAC from | 
|  | # root.root to system.log, may be deleted after ota has settled. | 
|  | chown system log /data/misc/bootstat/absolute_boot_time | 
|  | chown system log /data/misc/bootstat/boot_complete | 
|  | chown system log /data/misc/bootstat/boot_complete_no_encryption | 
|  | chown system log /data/misc/bootstat/boot_reason | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.1BLE | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.1BLL | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.2BLE | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.2BLL | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.AVB | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.KD | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.KL | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.ODT | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.SW | 
|  | chown system log /data/misc/bootstat/boottime.bootloader.total | 
|  | chown system log /data/misc/bootstat/build_date | 
|  | chown system log /data/misc/bootstat/factory_reset | 
|  | chown system log /data/misc/bootstat/factory_reset_boot_complete | 
|  | chown system log /data/misc/bootstat/factory_reset_boot_complete_no_encryption | 
|  | chown system log /data/misc/bootstat/factory_reset_current_time | 
|  | chown system log /data/misc/bootstat/factory_reset_record_value | 
|  | chown system log /data/misc/bootstat/last_boot_time_utc | 
|  | chown system log /data/misc/bootstat/ota_boot_complete | 
|  | chown system log /data/misc/bootstat/ota_boot_complete_no_encryption | 
|  | chown system log /data/misc/bootstat/ro.boottime.init | 
|  | chown system log /data/misc/bootstat/ro.boottime.init.cold_boot_wait | 
|  | chown system log /data/misc/bootstat/ro.boottime.init.selinux | 
|  | chown system log /data/misc/bootstat/time_since_factory_reset | 
|  | chown system log /data/misc/bootstat/time_since_last_boot | 
|  | # end ota transitional support | 
|  |  | 
|  | # Initialize bootstat state machine. | 
|  | # | 
|  | # sys.bootstat.first_boot_completed: responsible for making sure that record_boot_complete happens | 
|  | # only once per device hard reboot. Possible values: | 
|  | # | 
|  | #   sys.bootstat.first_boot_completed=0 - first boot completed trigger wasn't processed yet. | 
|  | #   sys.bootstat.first_boot_completed=1 - first boot completed trigger was processed and | 
|  | #                                         record_boot_complete was called. Subsequent boot completed | 
|  | #                                         triggers (e.g. due to userspace reboot) won't retrigger | 
|  | #                                         record_boot_complete | 
|  | # | 
|  | # IMPORTANT, ro.persistent_properties.ready=1 trigger is used here to ensure that we initialize | 
|  | # state machine only once, which as result ensures that bootstat --set_system_boot_reason and | 
|  | # bootstat --record_boot_complete will be called only once per full reboot. | 
|  | on property:ro.persistent_properties.ready=true | 
|  | setprop sys.bootstat.first_boot_completed 0 | 
|  |  | 
|  | # Set boot reason | 
|  | on property:ro.persistent_properties.ready=true | 
|  | # Converts bootloader boot reason and persist.sys.boot.reason to system boot reason | 
|  | # Need go after persist peroperties are loaded which is right before zygote-start trigger | 
|  | exec_background - system log -- /system/bin/bootstat --set_system_boot_reason | 
|  |  | 
|  | # Record boot complete metrics. | 
|  | on property:sys.boot_completed=1 && property:sys.bootstat.first_boot_completed=0 | 
|  | # Record boot_complete and related stats (decryption, etc). | 
|  | # Record the boot reason. | 
|  | # Record time since factory reset. | 
|  | # Log all boot events. | 
|  | exec_background - system log -- /system/bin/bootstat --record_boot_complete --record_boot_reason --record_time_since_factory_reset -l | 
|  | setprop sys.bootstat.first_boot_completed 1 |