- 论坛徽章:
- 0
|
为在代码中加入try_module_get(THIS_MODULE);然后加载上模块就看到使用量为1,卸载时提示模块在使用中,不能卸载!在exit函数中加入module_put(THIS_MODULE);也不行!
求大神详解try_module_get(THIS_MODULE)这句话的作用?在什么情况下能使用到?谢谢!
代码- #include<linux/init.h>//init&exit相关宏
- #include<linux/kernel.h>
- #include<linux/module.h>//所有模块都需要的头文件
- #include<linux/errno.h>
- 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 = %s\n",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);
-
- }
- int add_intergar(int a,int b)
- {
- return a+b;
- }
- module_init(hello_init);/*模块初始化*/
- module_exit(hello_exit);/*模块退出*/
复制代码 |
|