デバイスドライバ
デバイスドライバの勉強してまして、ちょっとしたものを作って登録したり、解除したりと遊んでいたら /proc/devices に次のようなレコードが…
/* ... 省略 ... */ 248 simpleio 249 秘秘 250 秘秘 251 秘秘 252 ??秒 /* ... 省略 ... */
simpleio ってのが自作のドライバなのですが、その後に続く「秘」の連続は? まぁ、実際のところドライバのアンロードに失敗して、メモリ関連のエラーが発生しているのでしょうけどね…。
ちょっと面白かったもので。
さぁ、再起動しなくちゃ。
【追記】 上記の理由が分かりました。というか至極基本的なミスをしていましたね。モジュール内のcleanup_module関数にて unregister_chrdev 呼んでいませんでした。馬鹿ですな。
【さらに追記】 どうも insmod を実行すると細々とワーニングが出るのが嫌で、標準で入っているモジュールのソースコードを見ていたら次のようなマクロを呼ぶ必要があるようだ。
MODULE_LICENSE("GPL"); MODULE_AUTHOR("J-Klein"); MODULE_DESCRIPTION("Simple Input/Output device driver.");
別にGPLである必要は無い(モジュールによってはGPLが必須になるようだが正直わかりません)のですが、とにかくこんな感じのマクロを呼んであげると奇麗にインストールできます。そして modinfo コマンドにて情報が見れます。何となく、自分の名前が modinfo で見れる事に酔いしれてみたり…。