あら
do_hd ってか hd_out 手続きから hd_interrupt が呼び出される仕組みを忘れた。
これも ia-32 なマニュアルに出てるのでしたっけ?
ええと
なエントリによれば
- hd_out() はディスクコントローラなレジスタに情報を出力して、割り込みから do_hd を呼び出す
- do_hd に格納される read_intr とか write_intr は処理が完了したら do_request() を呼び出す
- キューの操作とか待合せからの復帰なども行う
との事。この根拠はどこにあるんだー、とパニックちう。
メシ準備しつつ
Google 先生にお伺い。結構時間がかかったんですが以下がナニ。
- How to w/r harddisk in pmode?
- IDE - Hardware Reference & Information Document
- Interrupt and Synchronization
とりあえず 0x1f0 から 0x1f7 なコマンドを出力したら 8259A 方面に 0x2E な割り込みが発生する、という理解で良いのかな。実はどこにもその根拠が無かったりするんだけど、スデに枯れ果ててしまった技術、という事で勝手にそーなんだ、って結論に至った事を今頃思いだしてたりしてますorz