on early-init
#    loglevel 8

    mount securityfs securityfs /sys/kernel/security

    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.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
    # 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
    setprop vold.post_fs_data_done 1
    start init_wifi_sh

on boot
    chmod 0660 /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
