next up previous
次へ: 実験課題 上へ: キャラクタ型デバイスドライバの作成 戻る: キャラクタ型デバイスドライバの登録

キャラクタ型デバイスドライバの削除処理

モジュールを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)に、 これを書き加えると、次のようになる。


\begin{boxedminipage}{\textwidth}
\begin{verbatim}void __exit dio_cleanup(voi...
...
unregister_chrdev(dio_major, DRIVERNAME);
}\end{verbatim}
\end{boxedminipage}

rmmod関数を実行してデバイスドライバの登録を削除後、カーネルに登録 された情報が削除されているかどうかは、/proc/deveicesファイルを見 ることで確認できる。



MANOME Yoichi 平成19年1月6日