0

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

「arch\arm\mach-msm」の restart.c は、「Power off」ソフト ボタンを押した後、最初に電源オフ シーケンスを開始するモジュールでしょうか?

私はLinuxの初心者です。私はあなたの助けにとても感謝しています!

4

2 に答える 2

3

これはAndroidフォンだと思いますか?

Android は Linux カーネルに基づいていますが、Linux と Android のシャットダウン シーケンスには違いがあります。Linux シャットダウン シーケンスが行うことは、ランレベルを 0 に設定して開始することです。これにより、完全な停止と電源オフが可能になる前に、すべてのサービスがシャットダウンされます。

しかし、ランレベルは Linux カーネルの機能ではなく、initd の機能であるため、Android にはランレベルがありません。

これにより、Linux シャットダウン シーケンスの開始点が得られることを願っています。ランレベルについて学ぶことから始めるべきです。

カーネル シャットダウン シーケンスの詳細は、この質問にあります。

于 2014-11-28T10:22:56.630 に答える
0

Linux システムで電源ボタンを押すと、通常は にあるシェル スクリプトが呼び出され/etc/acpi/actions/power.shます。このスクリプトは、最初のアクティブな X11 セッションの ID を内部的に検索します。次に、電源マネージャーがあるかどうかを確認し、そうでない場合はシャットダウン コマンドを呼び出します。シャットダウンコマンドのソース コードを調べて、それが内部で呼び出すすべての関数/システム コールを自分で確認することをお勧めします。それが役に立てば幸い。

于 2014-11-28T10:49:05.640 に答える