私が知る限り、Windows システムには 255 の仮想 IRQ があり (チップセットは 16 の物理のみを許可)、通常はすべて物理 IRQ 11 を使用します。Linux システムには、仮想 IRQ の概念もあります。
では、このマッピングがどのように実装されているのか興味がありますか?Linux カーネルまたは単なるアルゴリズムからのソース コード サンプルをいただければ幸いです。
私が知る限り、Windows システムには 255 の仮想 IRQ があり (チップセットは 16 の物理のみを許可)、通常はすべて物理 IRQ 11 を使用します。Linux システムには、仮想 IRQ の概念もあります。
では、このマッピングがどのように実装されているのか興味がありますか?Linux カーネルまたは単なるアルゴリズムからのソース コード サンプルをいただければ幸いです。
割り込み処理の正確な実装は、アーキテクチャとプラットフォームによって異なります。ソースが利用可能であるため、この回答は主にLinuxに対応しています。少なくとも Linux の場合、ドライバーが書き込まれる汎用 IRQ 処理レイヤーがあり、基盤となる割り込みアーキテクチャーに関係なく、ドライバーがアーキテクチャー間で互換性を持つことができます。
最新のプラットフォームには複数の割り込みコントローラーがある場合があるため、要求された IRQ 番号request_irq()
の特定の割り込みコントローラーへのマッピングを処理するプラットフォーム固有のコードです。
たとえば、mach-pxa
PXAxxx ベース プラットフォーム用の Linux のアーキテクチャを考えてみましょう。プラットフォームのirq.cファイルには、2struct irq_chip
つの異なる割り込みコントローラーを示す 2 つの参照が含まれています。がpxa_init_irq()
呼び出されると、仮想割り込み番号が特定の割り込みコントローラーに割り当てられます。プラットフォーム コードは、考えられるすべての割り込みソースに一意の割り込み番号が割り当てられるようにします。
ここに掲載するには詳細すぎる詳細がかなりあるので、Linux ソースのコピーを入手して掘り下げることをお勧めします。マッピングを探している場合は、特に別のarch
ディレクトリを調べてください。
make htmldocs
トップレベルから a を実行すると、熟読できる a が得られますDocumentation/DocBook/index.html
。詳細については、genericirq
セクションを参照してください。
さらに、Linux Device Drivers, Corbet, Rubini, Kroah-Hartmanの書籍は優れた情報源です。