module_exit

終了処理関数はmodule_exitで登録する。

HelloWorld作成 | Linuxデバイスドライバ開発入門
module_exit() include/linux/init.h

前回、rmmodに失敗したが、まさかとおもって、

custom_module_exitを定義し、module_exitで登録してみた。

$ make
make -C /lib/modules/5.3.7-301.fc31.x86_64/build M=/home/bg1/project/cloud/github.com/Sample/linuxkernel/module_exit/module_exit/src/module_exit modules
make[1]: ディレクトリ '/usr/src/kernels/5.3.7-301.fc31.x86_64' に入ります
  CC [M]  /home/bg1/project/cloud/github.com/Sample/linuxkernel/module_exit/module_exit/src/module_exit/custom_module.o
  Building modules, stage 2.
  MODPOST 1 modules
WARNING: modpost: missing MODULE_LICENSE() in /home/bg1/project/cloud/github.com/Sample/linuxkernel/module_exit/module_exit/src/module_exit/custom_module.o
see include/linux/module.h for more information
  CC      /home/bg1/project/cloud/github.com/Sample/linuxkernel/module_exit/module_exit/src/module_exit/custom_module.mod.o
  LD [M]  /home/bg1/project/cloud/github.com/Sample/linuxkernel/module_exit/module_exit/src/module_exit/custom_module.ko
make[1]: ディレクトリ '/usr/src/kernels/5.3.7-301.fc31.x86_64' から出ます
$

makeしたので、
まず、いったんdmesgで、

何も出てないのを確認
何も出てないのを確認

何も出てないのを確認。
lsmodも、

いないね
いないね

いないね。
で、

$ sudo insmod custom_module.ko
[sudo] bg1 のパスワード:
$ dmesg

insmodしてdmesgすると、

custom_module_init呼ばれてる
custom_module_init呼ばれてる

custom_module_init呼ばれてる。

lsmodにもcustom_moduleがいる
lsmodにもcustom_moduleがいる

lsmodにもcustom_moduleがいる。
さて問題はここから。
rmmodしてみる。

rmmodでもエラーが出ない
rmmodでもエラーが出ない

rmmodでもエラーが出ない。

custom_module_exit呼ばれてる
custom_module_exit呼ばれてる

custom_module_exit呼ばれてる。

custom_moduleがいない
custom_moduleがいない

custom_moduleがいない。
ということはちゃんと削除出来たということかな。

Sample/linuxkernel/module_exit/module_exit/src/module_exit at master · bg1bgst333/Sample · GitHub