1. shutdown flow

0: run command
# reboot -p tired |
1: set property
system/core/reboot/reboot.c |
2: init
init/reboot.cpp |
3.4 init
init/reboot_utils.cpp |
5.6 bionic
bionic/libc/bionic/reboot.cpp |
- kernel
[ 83.079073] reboot: Power down |
2. reboot flow

The main difference is reboot will invoke kernel syscall __NR_reboot
directly.
reboot target
boot target | sys.powerctl | kernel | misc | note |
---|---|---|---|---|
normal | reboot,userrequested | kernel_restart(“userrequested”) | ||
bootloader | reboot,bootoader | kernel_restart(“bootloader”) | (command=bootonce-bootloader) | |
fastbootd | reboot,fastboot | kernel_restart(“recovery”) | (command=boot-recovery, status=, recovery=recovery –fastboot) | w/ dynamic partition |
bootloader | reboot,fastboot | kernel_restart(“bootloader”) | (command=bootonce-bootloader) | w/o dynamic partition |
fastbootd | - | - | (command=boot-fastboot, status=, recovery=recovery ) | |
recovery | reboot,recovery | kernel_restart(“recovery”) | ||
rescue | - | - | (command=boot-rescue, status=, recovery=recovery) | |
sideload | reboot,sideload | kernel_restart(“recovery”) | ||
sideload | reboot,sideload-auto-reboot | kernel_restart(“recovery”) | (command=boot-recovery, status=, recovery=recovery –sideload_auto_reboot ) |