Lions' 本読み (124)
読み、という程のエントリにはならない予定です。
5386 struct devtab rktab;
これ、静的に領域が確保されるんですね。
ざくっと確認した所では bdevsw な配列の d_tab 属性からも参照可能らしい。
で、ディスク操作完了時に発生する割り込みハンドラの rkintr の例で確認すると
5457 bp = rktab.d_actf;
で取り出している struct buf なオブジェクトは定義コメントによれば
4557 struct buf *d_actf; /* I/O キューの先頭 */
ということなので、bp に取り出したオブジェクトが処理完了したものとして
5470 rktab.d_actf = bp->av_forw; 5471 iodone(bp); 5472 rkstart();
今の次、をキューの先頭にリセットして、iodone で取り出したオブジェクトを処理終了として次のリクエストを云々、という形になっています。
rk.c において rktab は d_actf および d_actl という属性とその属性の av_forw を使って I/O リクエストのキューを操作しているように読めます。
土曜の話が脳に残っている間に
bio.c とか rk.c のあたりは確認しておきたいです。