Linux Kernel(2.6)の実装に関するメモ書き

IDEディスク


IDE HardDisk(/dev/hdx)のデバイスドライバのメモ

I/O要求の処理

do_ide_request()
Requestの実行 (q->request_fnに登録されている)

ide_do_request()
    elv_next_request() - 実行するRequestをElevatorから取得

    start_request()
        DRIVER(drive)->do_request() - (Diskの場合、ide_do_rw_disk())
            __ide_do_rw_disk()
                DiskにRead/Writeを実行

I/O要求の完了

ide_end_request()
I/O完了時のハンドラ
Read時は read_intr()から呼ばれる。

end_that_request_first(rq, uptodate, nr_sectors)
if (Requestに対するアクセスが全て完了したなら) {
    blkdev_dequeue_request(rq)
    end_that_request_last(rq)
        __blk_put_request(req->q, req)
            :
            elv_completed_request()
            :
}

割り込みハンドラ

ide_intr()
割り込みハンドラ

hwgroup->handlerに登録されていたコールバックを呼び出す。
(read_intr(),write_intr()等が登録される。)

ide_do_request() - 次のRequestがあれば処理させる


最終更新 2006/07/25 19:20:41 - kztomita
(2006/07/25 19:18:36 作成)


リンク
最近更新したページ
検索