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

キャラクタ型ドライバの解除(unregister_chrdev)

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


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

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



MANOME Yoichi 平成18年12月26日