android 关机 流程_Android 关机(reboot)流程

本文详细解析了Android系统从PowerManagerService的lowLevelReboot()开始,如何通过sys.powerctl属性,经过init.rc配置,到builtins.c的do_powerctl函数,再调用android_reboot()函数,最终进入内核层面完成重启或关机的过程。在工厂模式下adb reboot不可用的原因及解决方案也进行了探讨。
摘要由CSDN通过智能技术生成

->PowerManagerService中

lowLevelReboot()

SystemProperties.set("sys.powerctl", "reboot," + reason); //就传给Kernel进入reboot了

=》

那么接下来,走到哪里去了?

sys.powerctl 的配置在init.rc 当中,可以参考

on property:sys.powerctl=*

powerctl ${sys.powerctl}

然后执行system/core/init/builtins.c#do_powerctl 函数,call android_reboot 重启或者关机。

为何工厂模式下无法adb reboot ? 正常情况下adb reboot 可以重启, 其关键就是因为mediatek/config/{platform}factory_init.rc 中没有定义

on property:sys.powerctl=*

powerctl ${sys.powerctl}

如果要添加此功能,只有在factory_init.rc 中添加这两行即可

继续跟

=》在init.rc中和一个相关的on 触发器

396 on property:sys.powerctl=*

397 powerctl ${sys.powerctl}

=》会调用 builtins.c 的,参考间reboot,recovery

int do_powerctl(int nargs, char **args)

=>

return android_reboot(cmd, 0,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值