panic()
カーネルの機能とその他の機能が、トリガーされると、マシンの完全なフリーズを保証することを確認したいと思いますkernel_halt()
。machine_halt()
では、すべてのカーネル プロセスとユーザー プロセスは凍結されていますか? panic()
スケジューラによって中断可能ですか? 割り込みハンドラはまだ実行できますか?
使用例: 重大なエラーが発生した場合、ハードウェア ウォッチドッグがマシンをリセットすることを確認する必要があります。この目的のために、他のスレッド/プロセスがウォッチドッグを維持していないことを確認する必要があります。システムを完全に停止させる必要があります。現在、カーネル モジュール内では、単純panic()
にすべてをフリーズするために呼び出しています。
また、ユーザー空間halt
コマンドはシステムをフリーズさせることが保証されていますか?
ありがとう。
編集: http://linux.die.net/man/2/rebootによると、最善の方法は次を使用することだと思いますreboot(LINUX_REBOOT_CMD_HALT)
:「ROMモニターがあれば、制御が与えられます」