on early-fs
    start vold

on fs
    mount_all /vendor/etc/fstab.ranchu --early

on late-fs
    # Mount RW partitions which need run fsck
    mount_all /vendor/etc/fstab.ranchu --late

on early-init
    mount proc proc /proc remount hidepid=2,gid=3009
    setprop ro.hardware.vulkan ranchu

    # true if ram is <= 2G
    setprop ro.config.low_ram ${ro.boot.config.low_ram}
    setprop dalvik.vm.dex2oat64.enabled 1

    setprop ro.soc.manufacturer AOSP
    setprop ro.soc.model ranchu

    # DEPRECATED, use ro.boot.qemu instead. The GTS tests still refer to
    # ro.kernel.qemu to decide if a device is emulator. Should be removed once
    # GTS tests are migrated to ro.boot.qemu.
    setprop ro.kernel.qemu 1

on init
    # set RLIMIT_MEMLOCK to 8MB for BPF network statistics
    setrlimit memlock 8388608 8388608

    symlink /dev/goldfish_pipe /dev/android_pipe
    symlink /dev/goldfish_pipe /dev/qemu_pipe

    write /sys/block/zram0/comp_algorithm lz4
    write /proc/sys/vm/page-cluster 0

    #
    # 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

    setprop ro.hardware.audio.tinyalsa.period_count 4
    setprop ro.hardware.audio.tinyalsa.period_size_multiplier 4
    setprop ro.hardware.audio.tinyalsa.host_latency_ms 30

    start qemu-props

on post-fs-data
    setprop vold.post_fs_data_done 1
    mkdir /data/vendor/adb 0755 root root
    mkdir /data/vendor/devicestate 0755 root root
    mkdir /data/vendor/var 0755 root root
    mkdir /data/vendor/var/run 0755 root root

    start qemu-adb-keys
    start qemu-device-state

on zygote-start
    # Create the directories used by the Wireless subsystem
    mkdir /data/vendor/wifi 0771 wifi wifi
    mkdir /data/vendor/wifi/wpa 0770 wifi wifi
    mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi

on boot
    setprop ro.hardware.egl ${ro.boot.hardwareegl:-emulation}
    setprop debug.sf.vsync_reactor_ignore_present_fences true
    setprop debug.hwui.renderer opengl
    setprop debug.hwui.renderer ${ro.boot.debug.hwui.renderer}
    setprop ro.opengles.version ${ro.boot.opengles.version}
    setprop ro.surface_flinger.supports_background_blur 1
    setprop ro.zygote.disable_gl_preload 1

    setprop debug.stagefright.ccodec ${ro.boot.debug.stagefright.ccodec}

    setprop dalvik.vm.heapsize 192m
    setprop dalvik.vm.heapsize ${ro.boot.dalvik.vm.heapsize}
    setprop dalvik.vm.checkjni ${ro.boot.dalvik.vm.checkjni}
    chown root system /sys/power/wake_lock
    chown root system /sys/power/wake_unlock
    setprop ro.hardware.audio.primary goldfish

    setprop wifi.interface wlan0
    setprop wifi.direct.interface p2p-dev-wlan0

    # Create an unused USB gadget to allow sysfs testing
    mkdir /config/usb_gadget/g1 0770 root root

service ranchu-setup /vendor/bin/init.ranchu-core.sh
    class core
    user root
    group root
    oneshot

service qemu-adb-setup /system_ext/bin/init.qemu-adb-keys.sh
    class core
    user root
    group shell
    disabled  # Started when qemu-adb-keys is stopped
    oneshot

on property:vendor.qemu.vport.gnss=*
    symlink ${vendor.qemu.vport.gnss} /dev/gnss0

on property:vendor.qemu.timezone=*
    setprop persist.sys.timezone ${vendor.qemu.timezone}

on property:ro.boot.debug.sf.nobootanimation=1
    setprop debug.sf.nobootanimation 1

on property:dev.bootcomplete=1
    setprop vendor.qemu.dev.bootcomplete 1
    start ranchu-setup

on post-fs-data && property:ro.boot.qemu.virtiowifi=1
    start ranchu-net

on property:ro.boot.qemu.cpuvulkan.version=*
    setprop ro.cpuvulkan.version ${ro.boot.qemu.cpuvulkan.version}

service ranchu-net /vendor/bin/init.ranchu-net.sh
    class late_start
    user root
    group root wakelock wifi
    oneshot
    disabled    # Started on post-fs-data

service dhcpclient_wifi /vendor/bin/dhcpclient -i wlan0 --no-gateway
    user root
    group root
    disabled

service dhcpclient_def /vendor/bin/dhcpclient -i eth0 --no-gateway
    user root
    group root
    disabled

# The qemu-props program is used to set various system
# properties on boot. It must be run early during the boot
# process to avoid race conditions with other daemons that
# might read them (e.g. surface flinger), so define it in
# class 'core'
#
service qemu-props /vendor/bin/qemu-props
    class core
    user root
    group root
    oneshot

service qemu-adb-keys /vendor/bin/qemu-adb-keys
    class core
    user root
    group root
    oneshot

service qemu-device-state /vendor/bin/qemu-device-state
    class core
    user root
    group root
    oneshot

service goldfish-logcat /system/bin/logcat -f /dev/hvc1 ${ro.boot.logcat}
    class main
    user logd
    group root logd

service bugreport /system/bin/dumpstate -d -p -z
    class main
    disabled
    oneshot
    keycodes 114 115 116

service wpa_supplicant /vendor/bin/hw/wpa_supplicant -Dnl80211 -iwlan0 -c/vendor/etc/wifi/wpa_supplicant.conf -g@android:wpa_wlan0
    interface aidl android.hardware.wifi.supplicant.ISupplicant/default
    socket wpa_wlan0 dgram 660 wifi wifi
    group system wifi inet
    oneshot
    disabled

on property:vendor.qemu.vport.bluetooth=*
    symlink ${vendor.qemu.vport.bluetooth} /dev/bluetooth0


service bt_vhci_forwarder /vendor/bin/bt_vhci_forwarder -virtio_console_dev=/dev/bluetooth0
    class main
    user bluetooth
    group root bluetooth

# Enable zram only once per boot. From:

# 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 property:sys.boot_completed=1
    trigger sys-boot-completed-set

on sys-boot-completed-set && property:persist.sys.zram_enabled=1
    swapon_all /vendor/etc/fstab.${ro.hardware}
