BHハンドラは32種類しかなく、また殆ど予約済みあるため タスクキューという機能が拡張されている。 無制限に登録できるBHハンドラのようなものである。 一つのBHハンドラのエントリに、複数の処理を登録できるように 拡張されている。(TQUEUE_BH番目とIMMEDIATE_BH番目のエントリ)
この機能を利用する場合、各キューに登録する遅延処理要求のパケットは、 呼び出し側で用意する必要がある。 遅延処理要求のパケットの用意ができたら、あとは queue_task()関数にてその処理を登録するだけである。
queue_task()関数にて目的のキューに処理を登録できる。 登録された処理は、適当な時期に呼び出されるrun_task_queue() により実行される。 各キューに登録する 遅延処理要求のパケットを呼び出し側で用意しなければならないという わずらわしさはあるが、パケット不足で登録処理が失敗する危険を 心配しなくてよい点は優れている。
タスクキューには何種類かあり、目的に合わせて登録する先を 選ぶことができる。 登録された処理は、上記の図に示したモジュールが呼び出す run_task_queue()関数により実行される。
効率的なI/O順に変更することを可能としている。 ファイルシステムモジュール以外では利用できない。
専用のスレッドによって実行される。tq_schedulerの置き換えを 考えているようだ。
(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST1