当前位置: 技术问答>linux和unix
使用try_module_get后怎么卸载模块
来源: 互联网 发布时间:2017-04-01
本文导语: 本帖最后由 jk110333 于 2013-02-01 10:04:51 编辑 我写了一个最简单的hello模块,尝试使用了try_module_get(THIS_MODULE);语句,但是问题是使用这个后模块的使用数变成了1,也就不能卸载掉了,在模块退出时加上 module_put(THIS_MODULE...
求助,求解释,这句话有什么用?在什么场合下能使用到?
废话不说 代码////././
#include//init&exit相关宏
#include
#include//所有模块都需要的头文件
#include
MODULE_LICENSE("GPL");/*声明*/
MODULE_AUTHOR("Jack Chen");/*作者*/
MODULE_DESCRIPTION("hello module,simple module");//描述
MODULE_VERSION("1.0");//版本号
//MODULE_DEVICE_TABLE("usb");//支持的设备
static int initvalue = 0;
static char *initname = NULL;
module_param(initvalue,int, S_IRUGO);
module_param(initname,charp,S_IRUGO);
/*模块初始化函数*/
static int __init hello_init(void)
{
printk(KERN_ALERT"initvalue = %d initname = %sn",initvalue,initname);
printk(KERN_ALERT "(init)Hello,World!n");
try_module_get(THIS_MODULE);
return 0;
}
/*模块退出清除函数*/
static void __exit hello_exit(void)
{
printk(KERN_ALERT "(exit)Bye,World!n");
module_put(THIS_MODULE);
}
module_init(hello_init);/*模块初始化*/
module_exit(hello_exit);/*模块退出*/
|
rmmod是在调用module_exit之前检查模块的引用计数的,所以你在exit之前就应该要module_put释放引用计数