IRQ ハンドラを持つパラレル ポート ドライバのデバイス ドライバを 1 つ作成しました。
ここで、最初に IRQ7 にアクセスする必要があります。これは、パラレル ポートが割り込みを発生させるためです (/proc/interrupts で見たことがあります)。
今、私が直面した問題は、irq7 を要求しようとすると、request_irq() 関数が失敗することです。
また、私の猫 /proc/interrupt は次のようになります::
CPU0 CPU1
0: 98 0 IO-APIC エッジ タイマー
1: 11764 2178 IO-APIC エッジ i8042
3: 2 0 IO-APIC-edge
4: 2 0 IO-APIC-edge
7: 8 0 IO-APIC-edge parport0
8: 1 0 IO-APIC エッジ rtc0
9: 0 0 IO-APIC-fasteoi acpi
parport0とは何かわかりません。私の考えでは、この parport0 が原因で request_irq が失敗します。
私はそれを読みました: 「parport」コードは、Linux でパラレルポートのサポートを提供します。これには、複数のデバイス ドライバー間で 1 つのポートを共有する機能が含まれます。パラメータを parport コードに渡して、ハードウェアの自動検出を無効にすることができます。これは、IRQ を使用する場合に特に便利です。一般に、IRQ は正常に自動プローブされないためです。デフォルトでは、プローブできる場合でも IRQ は使用されません。これは、多くの人がパラレル ポートとサウンド カードまたはネットワーク カードに同じ IRQ を使用しているためです。
では、パラレル ポートからの割り込みを管理できるように、割り込みハンドラを irq7 に登録するにはどうすればよいでしょうか。