ブロックデバイスのドライバの登録は、register_blkdev関数を用いて、ブロックデバイスドライバの登録テーブルblkdev[]に、デバイス名とデバイス操作関数テーブルの登録を行う。unregister_blkdev関数はその逆に登録を抹消する。
キャラクタデバイスの場合は、register_chrdev関数、unregister_chrdev関数をを用いる。
register_blkdev(デバイスメジャー番号, デバイス名, デバイス操作関数テーブル)
{
if (デバイスメジャー番号 の指定が無いなら) {
ブロックデバイス登録テーブルblkdev[]の空きスロットを探し、
デバイス名とデバイス操作関数テーブルを登録する。
} else {
ブロックデバイス登録テーブルblkdev[デバイスメジャー番号]に、
デバイス名とデバイス操作関数テーブルを登録する。
}
}
ブロック型デバイスの場合は、これ以外にもデバイスの初期化時に以下のテーブルにデバイス情報を設定しておかねばならない。また割り込みを利用するデバイスでは、request_irq関数を用いて割り込みハンドラを登録して置かねばならない。(非常に汚いインターフェイスだ)
(NIS)HirokazuTakahashi
2000年12月09日 (土) 23時55分06秒 JST1