Android Linux内核断电顺序

时间:2014-11-28 10:12:18

标签: linux sequence power-off

我正在使用Android的Linux内核,我遇到了问题。我试图制作Android手机核心断电代码序列的流程图。

如果我按下手机上的电源按钮并选择"关闭电源"关闭我的设备。我想知道系统里面发生了什么。哪个内核模块将是断电序列的初始模块?哪个内核模块在整个断电过程中调用哪个系统调用?

我的设备日志文件如下所示..

...
ghost[362]: [Ghost] Now, 50th boot.
[  119.307156] msm_hsl_power: Unknown PM state 1
[  129.966017] pil-q6v5-mss fc880000.qcom,mss: PBL returned unexpected status -284491765
[  129.972866] pil-q6v5-mss fc880000.qcom,mss: mba: Failed to bring out of reset
[  129.992102] modem_notifier_cb: sysmon_send_event error -19
[  129.996628] M-Notify: General: 5
[  129.999825] msm_ipc_load_default_node: Failed to load modem
[  131.336799] pil-q6v5-mss fc880000.qcom,mss: PBL returned unexpected status -284491765
[  131.343844] pil-q6v5-mss fc880000.qcom,mss: mba: Failed to bring out of reset
[  131.351708] modem_notifier_cb: sysmon_send_event error -19
[  131.356216] M-Notify: General: 5
[  131.359430] smd_pkt_open failed on smd_pkt_dev id:0 - subsystem_get failed for modem
[  132.385289] param_sec_operation FAIL LLSEEK
[  132.388448] sec_open_param PARAM OPEN FAIL
[  132.392715] set_dload_mode <0> ( c01882a0 )
[  132.397069] (sec_debug_set_upload_magic) 0
[  132.496318] Power down.
[  132.497733] Powering off the SoC
[  132.500972] set_dload_mode <0> ( c0188348 )
[  132.505717] Calling SCM to disable SPMI PMIC

我想知道是否在&#34; arch \ arm \ mach-msm&#34;是第一个按下&#34;断电&#34;后关闭电源序列的模块。软按钮?

我是Linux的新手。我将非常感谢你的帮助!

2 个答案:

答案 0 :(得分:3)

我假设这是Android手机?

Linux和Android的关机序列之间存在差异,即使Android基于Linux内核。 Linux关闭序列的作用是将运行级别设置为0;在允许干净停止和断电之前,这将导致任何服务关闭。

但Android没有运行级别,因为它们不是Linux内核的功能,而是initd的功能。

希望这将为您提供Linux关闭序列的开始。您应该首先了解运行级别。

内核关闭序列的详细信息是in this question

答案 1 :(得分:0)

当您按下Linux系统上的电源按钮时,会调用一个shell脚本,该脚本通常出现在/etc/acpi/actions/power.sh。此脚本在内部查找第一个活动X11会话的ID。然后它检查是否有电源管理器,否则它会调用shutdown命令。我建议你查看shutdown命令的源代码,看看它内部调用的所有函数/系统调用。希望它有所帮助。