Oracle® Solaris 11.2 デバイスドライバの記述

印刷ビューの終了

更新: 2014 年 9 月
 
 

高レベルの割り込みの処理

高レベルの割り込みとは、スケジューラおよびそれより上のレベルで行われる割り込みのことです。このレベルでは、スケジューラは実行できません。したがって、スケジューラであらかじめ高レベルの割り込みハンドラを無効にすることはできません。スケジューラが原因となって、高レベルの割り込みをブロックできません。高レベルの割り込みで可能なのは、相互排他ロックを使ってロックすることのみです。

ドライバは、デバイスが高レベルの割り込みを使用しているかどうかを判定する必要があります。このテストは、割り込みの登録時にドライバの attach(9E) エントリポイントで行います。High-Level Interrupt Handling Exampleを参照してください。

  • ddi_intr_get_pri(9F) から返される割り込み優先順位が ddi_intr_get_hilevel_pri(9F) から返される優先順位以上である場合、ドライバは接続に失敗することがあります。または、ドライバは高レベルの割り込みハンドラを実装する可能性があります。高レベルの割り込みハンドラは、優先順位の低いソフトウェア割り込みを使用してデバイスを扱います。許可する並行処理の程度を上げるには、別個の mutex を使ってデータを高レベルのハンドラから保護します。

  • ddi_intr_get_pri(9F) から返される割り込み優先順位が ddi_intr_get_hilevel_pri(9F) から返される優先順位より低い場合、attach (9E) エントリポイントは通常の割り込み登録になります。この場合、ソフト割り込みは必要ありません。