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