init.common.rc: optimize exec command
resolve wait time in several exec commands
Test: on marlin
Bug: 34518530
Change-Id: I3766dca0a293623673ed4e4ef09d5d77e48eebab
diff --git a/init.common.rc b/init.common.rc
index 2a5fef1..b9a3943 100755
--- a/init.common.rc
+++ b/init.common.rc
@@ -37,12 +37,8 @@
symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice
mount_all fstab.${ro.hardware} --early
-
+ # Start qseecomd after vendor/ mounted
start qseecomd
- # Busy loop to wait for qseecomd started
- exec - root root system -- /system/bin/init.qcom.qseecomd.sh
- # Start devices by sysfs trigger
- start devstart_sh
swapon_all fstab.${ro.hardware}
@@ -60,6 +56,10 @@
on post-fs
symlink /dev/block/platform/soc.0/f9824900.sdhci /dev/block/bootdevice
+ # Busy loop to wait for qseecomd started, prefetch property for shell for faster exec
+ exec - root root system -- /system/bin/init.qcom.qseecomd.sh ${sys.listeners.registered:-false}
+ # Start devices by sysfs trigger
+ start devstart_sh
on late-fs
# Start servicemanager for faster bootanim
@@ -79,7 +79,9 @@
write /sys/block/dm-1/queue/read_ahead_kb 2048
on post-fs-data
- # restart qseecomd once we have /data/
+ # Set sku property
+ start mid_sh
+ # Restart qseecomd once we have /data/
restart qseecomd
mkdir /data/tombstones 0771 system system
mkdir /tombstones/modem 0771 system system
@@ -250,15 +252,13 @@
write /sys/module/peripheral_loader/parameters/proxy_timeout_ms ${persist.sys.pil_proxy_timeout}
# Update dm-verity state and set partition.*.verified properties
verity_update_state
- # Busy loop to wait for devices booted by devstart_sh just in case device not ready
- exec - root root system -- /system/bin/init.qcom.devwait.sh
+ # Busy loop to wait for devices, prefetch properties for shell for faster exec
+ exec - root root system -- /system/bin/init.qcom.devwait.sh ${sys.qcom.devup:-0}
on boot
- exec - root root system -- /system/bin/init.power.sh
- exec - root root system -- /system/bin/init.mid.sh
-
- exec - root root system readproc -- /system/bin/init.foreground.sh
-
+ # Exec init.mid.sh and init.foreground.sh in background
+ start power_sh
+ start foreground_sh
# add a cpuset for the camera daemon
# we want all cores for camera
mkdir /dev/cpuset/camera-daemon
@@ -683,3 +683,24 @@
start surfaceflinger
start audioserver
start bootanim
+
+service foreground_sh /system/bin/init.foreground.sh
+ class main
+ user root
+ group root system readproc
+ disabled
+ oneshot
+
+service power_sh /system/bin/init.power.sh
+ class main
+ user root
+ group root system
+ disabled
+ oneshot
+
+service mid_sh /system/bin/init.mid.sh
+ class main
+ user root
+ group root system
+ disabled
+ oneshot
diff --git a/init.qcom.devwait.sh b/init.qcom.devwait.sh
index aeee1d4..f6589f3 100755
--- a/init.qcom.devwait.sh
+++ b/init.qcom.devwait.sh
@@ -1,6 +1,7 @@
#!/system/bin/sh
-up="`getprop sys.qcom.devup`"
+up="$1"
+
while [ "$up" != "1" ]
do
sleep 0.1
diff --git a/init.qcom.qseecomd.sh b/init.qcom.qseecomd.sh
index 25a477d..f250fe1 100755
--- a/init.qcom.qseecomd.sh
+++ b/init.qcom.qseecomd.sh
@@ -1,6 +1,7 @@
#!/system/bin/sh
-registered="`getprop sys.listeners.registered`"
+registered="$1"
+
while [ "$registered" != "true" ]
do
sleep 0.1