android中重启流程,在kernel中的流程是怎样的的,具体到kernel的文件和函数
时间: 2024-03-28 16:38:31 浏览: 18
Android中重启的流程在Kernel中的流程如下:
1. 用户空间调用reboot()函数,该函数会将重启命令写入/sys/power/reboot文件中。
2. init进程检测到/sys/power/reboot文件中有重启命令后,会发送一个重启信号给所有进程。
3. 所有进程收到重启信号后,会进行清理工作并关闭。
4. init进程会调用/system/bin/stop来停止所有系统服务。
5. 当所有系统服务都停止后,init进程会调用/system/bin/umount来卸载所有文件系统。
6. 最后,init进程会调用/system/bin/reboot来重启系统,其中会将重启命令传递给内核。
7. 内核收到重启命令后,会调用kernel_restart()函数来进行重启操作。
8. 在kernel_restart()函数中,会调用machine_restart()函数来完成具体的重启操作。
9. machine_restart()函数会调用系统架构相关的restart函数,比如arm_pm_restart()函数。
10. restart函数会执行一系列重启操作,包括禁用中断、禁用定时器、关闭设备等。
11. 最后,restart函数会调用machine_halt()函数来重启系统。
具体到Kernel的文件和函数,Android中重启流程涉及到以下文件和函数:
1. /sys/power/reboot:该文件用于存储重启命令。
2. init进程:该进程是系统的第一个进程,负责启动其他进程和服务。
3. /system/bin/stop:该文件是一个脚本文件,用于停止所有系统服务。
4. /system/bin/umount:该文件是一个脚本文件,用于卸载所有文件系统。
5. /system/bin/reboot:该文件是一个可执行文件,用于重启系统。
6. kernel_restart()函数:该函数是内核中用于重启系统的函数。
7. machine_restart()函数:该函数是用于具体重启操作的函数。
8. restart函数:该函数是用于禁用中断、禁用定时器、关闭设备等操作的函数。
9. machine_halt()函数:该函数是用于重启系统的函数。
需要注意的是,具体实现可能因Android版本和不同设备而有所差异。