我写了一个简单的jiffies代码,当我尝试做rmmod时,我得到了
ERROR: Removing 'jiffi_module': Device or resource busy
所以我做了一些研究,并通过做lsmod以下的症状发现"永久性"是由于找不到exit_function引起的问题。
Module Size Used by
jiffi_module 1027 0 **[permanent]**
因为我的make文件确实显示了与退出功能相关的警告
退出功能定义为
时发出警告static void __exit
jif_exit(void)
{
remove_proc_entry("jif", NULL);
}
warning: data definition has no type or storage class
warning: type defaults to ‘int’ in declaration of ‘modile_exit’
warning: parameter names (without types) in function declaration
warning: ‘jif_exit’ defined but not used
当我删除__exit时,似乎它至少标识了jif_exit - 所以现在我得到的警告是
warning: data definition has no type or storage class
warning: type defaults to ‘int’ in declaration of ‘modile_exit’
warning: parameter names (without types) in function declaration
阅读以下Why is this kernel module marked at permanent on 2.6.39
它谈到gcc不匹配是一个问题?有人可以请求帮助我无法进一步调试吗?任何指针如何正确加载模块,使其不是永久性的?
答案 0 :(得分:1)
如果没有为其定义 exit 函数,则内核模块标记为permanent
(无法卸载)。
退出函数不接受任何参数并且不返回任何内容,应使用预定义名称定义
void cleanup_module(void)
{
...
}
或使用任意名称但已注册module_exit
宏
void <func_name>(void)
{
...
}
module_exit(<func_name>);
静态, __退出以及退出功能的其他属性是可选的。