CC/7x00 デバイスドライバの歴史…

時期としては1996年春頃に、 東大の学生実験用として一夜漬けで書き上げたものです。 デバイスドライバは、 九州大学タンデム加速器施設の前田さん('95 年当時 D4 ?)が 開発されたものを元にしています。 彼のメイン環境は PC-9801 + FreeBSD だったらしく、 就職する直前に Linux に移植したのだそうで、 色々未整理だった所を私がまとめ直し、 kernel 1.2.x → 2.0.x への対応等を行いました。 実は、元ソースは前田さんから直接貰ったのでなく、 西森君 ('95 年当時 D3 で、学位の実験のために理研に 滞在していました。'96 年に原研に就職しています) が私の興味のために送ってくれたもので、 九大に帰るまで西森君も存在を知らなかったくらいですから、 詳しい内容はおろか、 使い方すらも私は教えられていないのです。

データ収集のサンプルの方は、 私自身の勉強を兼ねてゼロから書き上げたものです。 当時は業界でも VMS を見捨てて UNIX へ移行しようと していた時期で、私も Linux を (と言うか C 言語すらも) 使い始めて半年余りの頃でした。 Tcl/Tk スクリプトも、私が書いたものとしてはコレが 二つ目 (変数の trace を使って event-driven に書いた ものとしては初めて) です。

一旦動き始めてみると、 結構実用的かも知れないという気がして来たので anonymous ftp に置いた所、 存外多くの人が入手して使ったり問い合わせたりして来ました (CC/7000 が輸出規制されている外国からも)。 '97 年頃には既に CC/7000 は製造されなくなっていたのですが、 CC/7700 への移植は簡単だったし (少なくとも ISA 版への移植は私自身も 40 分で済みました)、 それぞれの人が適当に書き換えて使っていたので、 特に配布版を作成したりはしませんでした。 しかし最近になって kernel 2.2.x ベースのシステムが主流に なると、2.0.x → 2.2.x の非互換性でハマっている人が居る らしき噂を耳にしたのと、 他のメインに使っているデータ収集システムの移植のついでも 有って、 Vine-2.1 を入手したのを機会に真面目に取り組む事にしました。

ところで、 最初のシステムを 一夜漬けで作ったというのは大袈裟でなく、 当時の学生実験で CAMAC によるデータ収集にとりかかった第一日目には、 西森君からソースだけを貰って途方に暮れている所でした。 最初は割り込みの使い方もわからなかったので、 かろうじて理解した ioctl による LAM の polling を使って CAMAC の基本的な説明を行い、 この方法では如何に CPU を占有してしまうかを強調して、 一日目の学生実験を終わりにしました。 そして、 その日の夜にデバイスドライバの割り込み周りを整備し、 簡単なデータ収集プログラムを書いて、 次の日の学生実験では、 割り込みを使って LAM を検知すると 如何に CPU の負担が減って効率的であるかをデモしたものです。 この時たまたま Linux Journal でローダブルモジュールの解説を 連載していたのは本当に幸運でしたが、 教官がこんな綱渡りの苦労をしているとは、 教えられる側は意識していないんでしょうねぇ。

戻る