Linux デバイスドライバに関する情報

デバイスドライバに関しては、 その名もズバリ という本が、 “バイブル”と称して良いほど網羅的に解説しているので、 私が改めて言い足す事は有りません (この本がもっと早く出版されていれば、 私の人生が如何に節約できたかと思わずにはいられません)。 これほど網羅的でないにしても、 入門的解説は今や雑誌記事や書籍として巷に溢れています。 良い時代になったものです。

ただし、 現時点(2000年12月)では kernel-2.2.x (特に 2.0.x との非互換性) に関して 充分に取り扱っている日本語の解説は、 見当たらないように思います。 上記のバイブルも、 原著が 1998 年の出版という事も有って、 最終章で kernel-2.1.x で進行中の変更がまとめられているだけで、 kernel-2.2 に対する対応はイマ一つです (↓の追記も参照ください)。

2.0 → 2.2 へのデバイスドライバのポートは、 Linux Magazine (アスキーから発刊されている日本語の方でなく、 米国で出版されている全く別の雑誌) の GearHeads というコラムに、 Alan Cox (Linux kernel 業界では言わずもがなの有名人) が

と題して寄稿しており、 短い中で改変の全容をまとめています (もちろん kernel-2.0 のドライバに充分馴染みのある人を 対象にしていますが)。

2.0.x → 2.2.x の改変で特に激しいのは file_operation 構造体関連で、 「Linux デバイスドライバ」に書かれている 2.1.x の変更からも 更に激しく変わっています。 細かい部分には Alan Cox の記事でも触れられていないので、 <linux/fs.h> の定義を見る必要が有りますし、 その他の詳しい事もソースツリーを見るのが一番です (大抵は /usr/include/linux//usr/include/asm/ 以下のへッダと、 /usr/src/linux/kernel/ 以下の sched.c, module.c, signal.c くらいです)。 scheduler の timeout の操作方法なんてのは、 私は私の好きな bttv ドライバ (/usr/src/linux/drivers/char/以下) で調べました。


[追記]

上記「バイブル」の原著の方は、最近 (2001年6月) 改訂版が出版されました。

もちろん kernel-2.4 を前提に書かれています。 これの日本語訳が待ち望まれる所ですが… (前掲書を翻訳した頃は山崎氏もトロントに定住したばかりで新婚でしたが)。

しかし、 2.2 → 2.4 へのデバイスドライバのポートは、 (kernel全体としては大幅な変更が加えられているようですが) マイナーな修正で対応できそうです。 私の知る範囲では

と言った程度です。


戻る