モジュールをrmmodコマンドで取り外すときには、キャラクタ型ドライバの登録
を解除する必要がある。rmmodコマンドで形式的にメモリ上のデバイスドライバ
のイメージを削除しても、カーネルにドライバ名やシステムコールのエントリ
ポイントが登録されたままになっていると、間違ってこれらの情報が使用された
場合には、ドライバのイメージが存在しないので、カーネルを破損する可能性がある。
つまり、Linuxシステムが壊れることがある。このような場合は自分の責任で、あらためてLinuxをインストールすること。
キャラクタ型ドライバを解除するにはcleanup_moduleの中で、
unregister_chrdev
関数を実行すればよい。だだし、
情報システム実験(4)では、dioボードのドライバであること
を明示的に示すために、このモジュール、すなわちcleanup_moduleを
dio_cleanup
と名付けた。
ドライバを解除するときには、登録するときに設定したメジャー番号と
デバイス名の情報が必要となる。
この2つの情報を引数として、つぎのようにunregister_chrdev
関数を実行
すれば、登録を解除することができる。
unregister_chrdev(dio_major, DRIVERNAME) |
情報システム実験(4)のクリーンナップルーチン(dio_cleanup
)に、
これを書き加えると、次のようになる。
rmmod関数を実行してドライバの登録を解除後、カーネルに登録された情報が削
除されているかどうかは、/proc/deveices
ファイルを見ることで確認で
きる。