前回からの続き。
VMを使えばシリアルポートなんて簡単に接続できることに、いまさら気づいた。(始めてから2週間くらい)
機材そろえちゃったよ……。
気を取り直して、ハマっているbio(I/O)を探してみる。(そしてこれもうまくいかなかった。)
sys/geom/geom_io.cによれば、g_bio_run_(down|up|task)
の3つのキューがあるらしい。
キューはstruct g_bioq
で、宣言はsys/geom/geom.hにある。
struct g_bioq { TAILQ_HEAD(, bio) bio_queue; struct mtx bio_queue_lock; int bio_queue_length; };
#define TAILQ_HEAD(name, type) \ struct name { \ struct type *tqh_first; /* first element */ \ struct type **tqh_last; /* addr of last next element */ \ TRACEBUF \ }
とりあえず1つ追ってみる。
db> print g_bio_run_up ffffffff81c208d0 db> x/gx g_bio_run_up g_bio_run_up: 0
と思ったらそもそもキューが空だった。down/taskもからっぽ。
そもそも当てずっぽうだったから、原因にすぐたどり着くとは思ってなかったけど、ちょっと残念。