終了処理関数は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呼ばれてる。
lsmodにもcustom_moduleがいる。
さて問題はここから。
rmmodしてみる。
rmmodでもエラーが出ない。
custom_module_exit呼ばれてる。
custom_moduleがいない。
ということはちゃんと削除出来たということかな。
Sample/linuxkernel/module_exit/module_exit/src/module_exit at master · bg1bgst333/Sample · GitHub