/ / linuxで同じデバイスを扱うために複数のドライバを登録できますか? - linux、linux-kernel、interrupt、interrupt-handling

複数のドライバがlinux - linux、linux-kernel、interrupt、interrupt-handlingで同じデバイスを扱えるように登録できますか?

私はLinuxカーネル開発をRobert Loveと現在Linuxで割り込み処理を読み込んでいます。ドライバーは、以下の関数を使用してハードウェアデバイスを処理するために登録することができます。ここで、最終引数devはデバイスに対して一意です。これは、同じハードウェアデバイスを扱う2つのデバイスドライバを持つことができないということですか?既存のドライバと一緒に動作するキーボードドライバを実装する場合は不可能ですか?既存のドライバをキーボードとレジスタの登録を解除する必要がありますか私が書いたものは?

int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags,
const char *name, void *dev)

回答:

回答№1は1

場合によっては、割り込み要求ラインはドライバ間で共有されます。そのような場合、ドライバはIRQF_SHAREDをflagsで提供し、request_irq()を呼び出すときには一意のdev値を提供します。

デバイスドライバは通常、ハードウェアはハードウェアの複数のコンポーネントに使用される単一の割り込みを提供します。それぞれのコンポーネントには独自のドライバがあります。この場合、ハードウェアは各コンポーネントの割り込みステータスとマスクビットも提供します。

私はあなたのキーボードについて何も知らないハードウェアであるため、2つのデバイスドライバを使用できるかどうかは言い難いです。必要なのはデバイスへの読み取りアクセスと、他のドライバによってデバイスの状態が変わらない場合です。

たとえば、2つのドライバ間でUARTを共有すると、ドライバの1つだけがRX FIFOから文字を読み取ることができるため、間違いなく動作しません。