admin 管理员组文章数量: 887031
module
#include <linux/moduleparam.h>
#include <linux/module.h>// 在用户态下编程可以通过main()的来传递命令行参数
// 编写一个内核模块则通过module_param()static char *global_name= "hello world";
static int global_count = 3;// 要传递的参数变量名, 变量的数据类型, 访问参数的权限。
// 权限值:表示此参数在sysfs文件系统中所对应的文件节点的属性
// 当perm为0时,表示此参数在 sysfs文件系统下不存在对应的文件节点。
// 否则,模块被加载后,在/sys/module/ 目录下将出现以此模块名命名的目录,带有给定的权限
// 使用 S_IRUGO 作为参数可以被所有人读取, 但是不能改变; S_IRUGO|S_IWUSR 允许 root 来改变参数
// 注意, 如果一个参数被 sysfs 修改, 则用到的模块看到的参数值也改变了, 但是各模块不会收到任何通知
// 应当不要使模块参数可写, 除非已经准备好检测这个改变,并且因而作出反应module_param(global_count, int, S_IRUSR);
module_param(global_name, charp, S_IRUSR); static int hello_init(void)
{int i;for(i=0;i<global_count;i++)printk(KERN_ALERT "(%d) %s\n",i, global_name);return 0;
}static void hello_exit(void)
{printk(KERN_ALERT"Goodbye\n");
}module_init(hello_init);
module_exit(hello_exit);MODULE_LICENSE("Dual BSD/GPL");
root@ubuntu:/home/study/test32# dmesg | grep -iE "hello"
[28360.866843] (0) hello world
[28360.866980] (1) hello world
[28360.866985] (2) hello world
root@ubuntu:/sys/module/my_hello/parameters# ls
global_count global_name
本文标签: module
版权声明:本文标题:module 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1688341127h208285.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论