カーネルのドキュメントにはfree_irq
、次のことが記載されています。
この関数は、割り込みコンテキストから呼び出してはなりません。
ソフトウェア割り込みは含まれますか?ソフトウェア IRQ 関数で IRQ を解放するにはどうすればよいですか?
ご協力いただきありがとうございます、
カーネルのドキュメントにはfree_irq
、次のことが記載されています。
この関数は、割り込みコンテキストから呼び出してはなりません。
ソフトウェア割り込みは含まれますか?ソフトウェア IRQ 関数で IRQ を解放するにはどうすればよいですか?
ご協力いただきありがとうございます、
はい、そのルールには softirq コンテキストが含まれています。softirq コンテキストから呼び出す必要があると思われるという事実free_irq()
は、設計が少し異常であることを示しています。通常free_irq()
、デバイスがシャットダウンされているときに使用されます。これは、ほとんどの場合、プロセス コンテキストからのものです。
ただし、本当にそれを行う必要がある場合は、schedule_work()
または同様のワークキュー関数を介してコンテキストを処理するためにそれを延期することです。もちろん、その延期された作業が完了するのを softirq で待つことはできないため、IRQ を解放した後に行われる他の作業も延期する必要があります。
free_irq()
割り込みコンテキストから呼び出そうとする理由についてもう少し情報を提供すると、より良い答えが得られる可能性があります。