Linux では、カーネル空間ではなくユーザー空間コードでデバイス割り込みを処理するためのオプションは何ですか?
質問する
24981 次
4 に答える
7
経験によれば、ほぼすべての PCI アダプターに対して、適切で安定したユーザー空間ドライバーを作成することが可能です。必要なのは、洗練されたものと、カーネル内の小さなプロキシ レイヤーだけです。UIO はその方向への一歩ですが、ユーザー空間で割り込みを正しく処理したい場合は、UIO が依存する PCI 仕様の割り込み無効ビットをデバイスがサポートしていない場合など、UIO では不十分な場合があります。
プロセスのウェイクアップのレイテンシーは数マイクロ秒であるため、実装で非常に低いレイテンシーが必要な場合は、ユーザー空間が足を引っ張る可能性があることに注意してください。
ユーザー空間ドライバーを実装する場合、カーネル ISR を「disable & ack & wakeup-userpace」操作だけに減らし、ウェイクアップ プロセス内で割り込みを処理し、割り込みを再度有効にします (もちろん、ユーザー空間プロセスからマップされた PCI メモリに書き込むことによって)。
于 2011-11-02T22:23:53.317 に答える
6
UIOがありますが、処理は引き続きカーネル空間で行う必要があります。OTOH、割り込みに気付くだけなら、カーネル部分は必要ありません。
于 2011-11-02T20:05:22.753 に答える
2
第10章: Linuxデバイスドライバからの割り込み処理、第3版の本をご覧ください。
于 2011-11-02T20:21:28.767 に答える