[RK3399][Android6.0] 系统重启调用过程小结
来源:互联网 发布:网络视频图片存放 编辑:程序博客网 时间:2024/06/08 02:20
Platform: Rockchip
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 );}
- [RK3399][Android6.0] 系统重启调用过程小结
- [RK3399][Android6.0] 系统关机调用过程小结
- [RK3399][Android6.0] 系统支持的重启模式
- [RK3399][Android6.0] 系统重启支持恢复出厂设置参数
- [Android6.0][RK3399] TypeC 基础知识
- [Android6.0][RK3399] IR(红外线)移植步骤
- [Android6.0][RK3399] PWM Backlight 驱动分析
- [Android6.0][RK3399] 电池系统(一)BQ25700 IC 驱动分析
- [Android6.0][RK3399] 电池系统(二)BQ IC 添加 DC 充电功能
- [Android6.0][RK3399] 电池系统(三)电量计 CW2015 驱动流程分析
- [Android6.0][RK3399] 电池系统(四)不插电池无法开机的问题
- [RK3288][Android6.0] USB 枚举过程小结
- [RK3288][Android6.0] USB 枚举过程小结
- [RK3288][Android6.0] MediaCodec初始化过程小结
- [RK3288][Android6.0] Audio中的录音重采样小结
- [Android6.0][RK3399] USB接口Touchscreen驱动流程分析
- [Android6.0][RK3399] 隐藏导航栏或状态栏
- [Android6.0][RK3399] 串口无法输入输出 串口打印乱码
- NLPIR/ICTCLAS 2015 分词系统使用
- 怎么用图片取代radio的图标且图片能随着点击而变换
- Manthan, Codefest 17 Marvolo Gaunt's Ring
- LeetCode
- 新的Java 9功能一目了然
- [RK3399][Android6.0] 系统重启调用过程小结
- Java线程池使用与原理
- python使用原始套接字发送二层包(链路层帧)
- tensorflow学习之---CNN识别MNIST
- Duilib 界面库的窗口类型和实现方法
- python使用epoll实现的服务端例子
- @RequestMapping 用法详解之地址映射
- MyEclipse太耗内存启动慢的优化解决方案!
- Android Studio每日小技巧