誰もが割り込みハンドラができるだけ短いことを知っています。割り込みハンドラ内でのデバッグのためにprintk
のような関数を追加することは、実行すべきではないことです。 実際には、私が書いた割り込み駆動のcharデバイスのためにLinuxカーネルをデバッグしていたときにそれを試してみました。ドライバのタイミングが壊れました。割り込みハンドラの中にprintkがありますが、それは本当に悪いですか?
私が持っている質問は、なぜこれが起こっているのでしょうか? printk
機能がバッファされています!つまり、データがキューに挿入され、後で処理されていることを理解している限り、おそらく割り込みハンドラが終了したことを意味します。
なぜそれが機能しませんか?
あなたの印刷呼び出しがバッファをいっぱいにして、それを強制的にフラッシュする可能性を考慮してください。割り込みハンドラでI/Oを実行するとどうなりますか? –
はい、本当に悪いです。ありがとう、おやすみなさい。 –
※動作します。 'printk'は割り込みやプロセスコンテキストから呼び出されるように設計されています。そうでなければ、デバッグにあまり役に立たないでしょう。しかし、あなたは明らかにそれを生産ドライバの割り込みコンテキストで呼び出さない。 – EML