linux模組載入和模組解除安裝時出現的問題
解決方案:
第一步、在/lib/modules/目錄中建立與當前核心版本號一致的目錄 如 uname -r 得到 2.6.31.6則mkdir -p /lib/modules/2.6.31.6 否則會出現“rmmod: chdir(2.6.31.6): No such file or directory”類似的錯誤,而模組也沒有被解除安裝;
第二步、在驅動模組解除安裝函式__exit中的cdev_del(struct cdev *)函式呼叫後即登出字元裝置後呼叫 unregister_chrdev_region(dev_t devno, unsigned count)函式釋放在驅動載入函式__init中通過register_chrdev_region、alloc_chrdev_region,註冊的主裝置號。(cdev_del函式、unregister_chrdev_region函式缺一不可);
經過以上兩步操作後,rmmod 模組名稱 解除安裝模組就不會錯誤了,而且cat /proc/devices也不會再有已經解除安裝的模組的資訊,這樣再次載入模組也不會出錯了!