on early-init
#    loglevel 8

    setprop ro.sf.lcd_density ${ro.boot.lcd_density}
    setprop ro.hardware.egl ${ro.boot.hardware.egl}
    setprop debug.sf.vsync_reactor_ignore_present_fences true
    setprop ro.hardware.gralloc ${ro.boot.hardware.gralloc}
    setprop ro.hardware.hwcomposer ${ro.boot.hardware.hwcomposer}
    setprop ro.vendor.hwcomposer.display_finder_mode ${ro.boot.hardware.hwcomposer.display_finder_mode}
    setprop ro.vendor.hwcomposer.mode ${ro.boot.hardware.hwcomposer.mode}
    setprop ro.hardware.vulkan ${ro.boot.hardware.vulkan}
    setprop ro.cpuvulkan.version ${ro.boot.cpuvulkan.version}
    setprop ro.hw_timeout_multiplier ${ro.boot.hw_timeout_multiplier}
    setprop ro.opengles.version ${ro.boot.opengles.version}

    # start module load in the background
    start vendor.dlkm_loader

on init
    # ZRAM setup
    write /sys/block/zram0/comp_algorithm lz4

    # EAS uclamp interfaces
    mkdir /dev/cpuctl/foreground
    mkdir /dev/cpuctl/background
    mkdir /dev/cpuctl/top-app
    mkdir /dev/cpuctl/rt
    chown system system /dev/cpuctl
    chown system system /dev/cpuctl/foreground
    chown system system /dev/cpuctl/background
    chown system system /dev/cpuctl/top-app
    chown system system /dev/cpuctl/rt
    chown system system /dev/cpuctl/tasks
    chown system system /dev/cpuctl/foreground/tasks
    chown system system /dev/cpuctl/background/tasks
    chown system system /dev/cpuctl/top-app/tasks
    chown system system /dev/cpuctl/rt/tasks
    chmod 0664 /dev/cpuctl/tasks
    chmod 0664 /dev/cpuctl/foreground/tasks
    chmod 0664 /dev/cpuctl/background/tasks
    chmod 0664 /dev/cpuctl/top-app/tasks
    chmod 0664 /dev/cpuctl/rt/tasks

on fs
    mkdir /mnt/vendor/shared 0770 system system

    # Mount everything that does not require fsck
    mount_all --early
    restorecon_recursive /vendor

    # So GceBootReporter can print to kmsg
    chmod 622 /dev/kmsg

on post-fs
    # set RLIMIT_MEMLOCK to 64MB
    setrlimit 8 67108864 67108864

on post-fs-data && property:ro.vendor.disable_rename_eth0=
    # works around framework netiface enumeration issue
    # TODO(b/202731768): Add this `start rename_eth0` command to the init.rc for rename_netiface
    start rename_eth0

on post-fs-data && property:ro.vendor.wifi_impl=virt_wifi
    # TODO(b/202731768): Add this `start setup_wifi` command to the init.rc for setup_wifi
    start setup_wifi

on post-fs-data
    mkdir /data/vendor/modem_dump 0777 system system
    mkdir /data/vendor/radio 0777 system system

on late-fs
    # Mount RW partitions which need run fsck
    mount_all --late

    write /dev/kmsg "GUEST_BUILD_FINGERPRINT: ${ro.build.fingerprint}"

on post-fs-data && property:ro.vendor.wifi_impl=mac8011_hwsim_virtio
    mkdir /data/vendor/wifi 0770 wifi wifi
    mkdir /data/vendor/wifi/hostapd 0770 wifi wifi
    mkdir /data/vendor/wifi/hostapd/sockets 0770 wifi wifi
    start init_wifi_sh

on boot
    chmod 0770 /dev/cpuctl
    mkdir /data/vendor/wifi 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi
    start socket_vsock_proxy
    setprop ro.hardware.audio.primary goldfish
    symlink /dev/hvc6 /dev/gnss0
    symlink /dev/hvc7 /dev/gnss1

on property:sys.boot_completed=1
    trigger sys-boot-completed-set

# We want one opportunity per boot to enable zram, so we
# use a trigger we fire from the above stanza. If
# persist.sys.zram_enabled becomes true after boot,
# we don't want to run swapon_all at that time.
on sys-boot-completed-set && property:persist.sys.zram_enabled=1
    swapon_all

service vendor.dlkm_loader /vendor/bin/dlkm_loader
    class main
    user root
    group root system
    disabled
    oneshot

service socket_vsock_proxy /vendor/bin/socket_vsock_proxy -server=vsock -tcp_port=5555 -vsock_port=6520

service seriallogging /system/bin/logcat -b all -v threadtime -f /dev/hvc2 *:V
    class main
    user logd
    group root logd

service vsoc_input_service /vendor/bin/vsoc_input_service -touch_port=${ro.boot.vsock_touch_port} -keyboard_port=${ro.boot.vsock_keyboard_port}
    group root uhid
    disabled

on early-boot && property:ro.boot.vsock_touch_port=*
   enable vsoc_input_service
   start vsoc_input_service

on early-boot && property:ro.boot.vsock_keyboard_port=*
   enable vsoc_input_service
   start vsoc_input_service

service bugreport /system/bin/dumpstate -d -p -z
    class main
    disabled
    oneshot
    keycodes 30 48

# TODO: disable this service once cuttlefish implements system suspend
service suspend_blocker /vendor/bin/suspend_blocker
    class early_hal # Start together with system_suspend HAL
    group system
    user root
