ソフト割り込み
Rev.1を表示中。最新版はこちら。
ソフト割り込み関連BH ### 2.6では削除された ###
マルチプロセッサでも複数実行は不可
登録数は32まで。
(2.4の実装としては高優先度タスクレットとして登録され実行される)
タスクキュー ### 2.6では削除された ###
BHの拡張。
一つのBHに複数のハンドラを登録できる。
以下のタスクキューはBHの中で処理される。
tq_immediate 即実行用タスクキュー
tq_timer タイマ用タスクキュー
他にもタスクキューは存在する。
ソフト割り込み
マルチプロセッサの場合、各プロセッサで同じ割り込みが動作可能
タスクレット
ソフト割り込みの一つ。
複数のハンドラを登録できる。
複数のCPUで同時実行できるが同じタスクレットは同時実行できない。
softirq_vec[]
- --------------+
- --------------+
- --------------+
- --------------+
- --------------+
- --------------+
- --------------+
open_softirq()で登録する。
raise_softirq()でスケジュールする
(pendingフラグを立ててksoftirqd()をWakeupする)
tasklet_vec[] (HI_SOFTIRQ用にtasklet_hi_vec[]もある)
- --------------+
CPU#0 |
- --------------+
CPU#1 |
- --------------+
タスクレットのハンドラを登録する。
tasklet_init()でtasklet_structを初期化して、
tasklet_schedule()によってtasklet_structをチェーンして、
TASKLET_SOFTIRQをスケジュールする
Kernel2.6ではソフト割り込みとタスクレットのみとなった。
また、新規の割り込みはタスクレットとして実装するように
linux/interrupt.hに記されている。