免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2297 | 回复: 0
打印 上一主题 下一主题

[内核模块] 使用try_module_get后怎么卸载模块 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-02-01 10:33 |只看该作者 |倒序浏览
为在代码中加入try_module_get(THIS_MODULE);然后加载上模块就看到使用量为1,卸载时提示模块在使用中,不能卸载!在exit函数中加入module_put(THIS_MODULE);也不行!
求大神详解try_module_get(THIS_MODULE)这句话的作用?在什么情况下能使用到?谢谢!
代码
  1. #include<linux/init.h>//init&exit相关宏
  2. #include<linux/kernel.h>
  3. #include<linux/module.h>//所有模块都需要的头文件
  4. #include<linux/errno.h>
  5. MODULE_LICENSE("GPL");/*声明*/
  6. MODULE_AUTHOR("Jack Chen");/*作者*/
  7. MODULE_DESCRIPTION("hello module,simple module");//描述
  8. MODULE_VERSION("1.0");//版本号
  9. //MODULE_DEVICE_TABLE("usb");//支持的设备
  10. static int initvalue = 0;
  11. static char *initname = NULL;

  12. module_param(initvalue,int, S_IRUGO);
  13. module_param(initname,charp,S_IRUGO);

  14. /*模块初始化函数*/
  15. static int __init hello_init(void)
  16. {
  17.         printk(KERN_ALERT"initvalue = %d initname = %s\n",initvalue,initname);
  18.         printk(KERN_ALERT "(init)Hello,World!\n");
  19.         try_module_get(THIS_MODULE);
  20.         return 0;
  21. }

  22. /*模块退出清除函数*/
  23. static void __exit hello_exit(void)
  24. {
  25.         printk(KERN_ALERT "(exit)Bye,World!\n");
  26.         module_put(THIS_MODULE);

  27. }
  28. int add_intergar(int a,int b)
  29. {
  30.         return a+b;
  31. }
  32. module_init(hello_init);/*模块初始化*/
  33. module_exit(hello_exit);/*模块退出*/
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP