我正在使用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的新手。我将非常感谢你的帮助!
答案 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命令的源代码,看看它内部调用的所有函数/系统调用。希望它有所帮助。