[RK3288][Android6.0] 系统重启调用过程小结
2017-09-25 10:01
357 查看
Platform: Rockchip
OS: Android 6.0
Kernel: 3.10.92
reboot方式有两种:
1. 通过命令行
2. code中调用reboot().
命令行调用:
命令调用对应的源文件:
system/core/reboot/reboot.c
本质上是通过property中的sys.powerctl来触发init进程调用
init.rc中有:
它会调用powerctl ioctl, 流程如下
KEYWORD(powerctl, COMMAND, 1, do_powerctl) -> //keywords.h 根据传进来的字符串转换命令。
android_reboot -> //android_reboot.c
__reboot -> //reboot.h 系统调用,陷入内核。
SYSCALL_DEFINE4 -> //kernel/sys.c
kernel_restart ->
machine_restart -> //arch/arm/kernel/process.c
arm_pm_restart ->
mdesc->restart -> //开机时在setup.c@setup_arch()中赋值
rk3288_restart //rk3288.c
代码中直接调用:
其实和第一种差不多,只是它直接调用的是__reboot()而已。
OS: Android 6.0
Kernel: 3.10.92
reboot方式有两种:
1. 通过命令行
2. code中调用reboot().
命令行调用:
命令调用对应的源文件:
system/core/reboot/reboot.c
本质上是通过property中的sys.powerctl来触发init进程调用
property_set(ANDROID_RB_PROPERTY, “reboot”);
init.rc中有:
on property:sys.powerctl=* powerctl ${sys.powerctl}
它会调用powerctl ioctl, 流程如下
KEYWORD(powerctl, COMMAND, 1, do_powerctl) -> //keywords.h 根据传进来的字符串转换命令。
android_reboot -> //android_reboot.c
__reboot -> //reboot.h 系统调用,陷入内核。
SYSCALL_DEFINE4 -> //kernel/sys.c
kernel_restart ->
machine_restart -> //arch/arm/kernel/process.c
arm_pm_restart ->
mdesc->restart -> //开机时在setup.c@setup_arch()中赋值
rk3288_restart //rk3288.c
代码中直接调用:
其实和第一种差不多,只是它直接调用的是__reboot()而已。
int reboot (int mode) { return __reboot( LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, mode, NULL ); }
相关文章推荐
- [RK3288][Android6.0] 系统关机调用过程小结
- [RK3288][Android6.0] Apk设置显示旋转过程小结
- [RK3288][Android6.0] 系统调试串口驱动流程小结
- [RK3288][Android6.0] WiFi的驱动初始化过程小结
- [RK3288][Android6.0] MediaCodec初始化过程小结
- [RK3288][Android6.0] WiFi在Setting中的开启过程小结
- [RK3288][Android6.0] USB 枚举过程小结
- [RK3288][Android6.0] USB 枚举过程小结
- [RK3288][Android6.0] Audio中的混音过程小结
- [RK3288][Android6.0] 系统中UID(用户ID)知识点小结
- [RK3288][Android6.0] MediaCodec的configure配置过程小结
- [RK3288][Android6.0] WiFi之Framework连接过程小结
- [RK3288][Android6.0] WIFI接入过程的加密和认证方式小结
- [RK3288][Android6.0] Audio的音量计算过程小结
- [RK3288][Android6.0] RTC驱动的上层调用流程
- [RK3288][Android6.0] USB WiFi驱动流程小结
- [RK3288][Android6.0] Display驱动初始化流程小结【转】
- [RK3288][Android6.0] WiFi之Framework扫描过程
- [RK3288][Android6.0] 调试笔记 --- 系统Dump Callstack方法
- [RK3288][Android6.0] Audio的DMA调用实例流程