ただし、 現時点(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 業界では言わずもがなの有名人) が
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月) 改訂版が出版されました。
しかし、 2.2 → 2.4 へのデバイスドライバのポートは、 (kernel全体としては大幅な変更が加えられているようですが) マイナーな修正で対応できそうです。 私の知る範囲では
file_operation
構造体の最初の要素として
struct module *owner
が加えられた。
取り敢えず<linux/module.h>
で定義される
THIS_MODULE
マクロを指定しておけばオッケー。
<linux/wait.h>
で定義されるマクロで行う。
例えば
static struct wait_queue *wait_que = NULL;
は
static DECLARE_WAIT_QUEUE_HEAD(wait_que);
に変更、等々 (実は dc.c
ではコレしか使っていない)。