Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2297432
  • 博文数量: 395
  • 博客积分: 10994
  • 博客等级: 上将
  • 技术积分: 5586
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-17 19:49
文章存档

2014年(1)

2013年(10)

2012年(74)

2011年(303)

2010年(7)

分类: LINUX

2011-06-15 22:31:02

模块参数

  1. 模块参数
  2. 一。
  3. param.c
  4. #include <linux/module.h>
  5. #include <linux/init.h>
  6.  
  7. MODULE_LICENSE("GPL");
  8. static char *name ="feifei";
  9. static int age=30;
  10. module_param(age,int,S_IRUGO);
  11. module_param(name,charp,S_IRUGO);

  12. static int __init hello_init(){
  13.         printk(KERN_EMERG "Name:%s\n",name);
  14.         printk(KERN_EMERG "Age:%d\n",age);
  15.         return 0;
  16. }
  17.  
  18. static void __exit hello_exit(void){
  19.         printk(KERN_EMERG "Module exit\n");
  20. }
  21. module_init(hello_init);
  22. module_exit(hello_exit);
  23. /*注释
  24. moudle_param 宏定义来声明name,age 参数可用
  25. module_param 使用了 3 个参数: 变量名, 它的类型, 以及一个权限掩码用来做一个辅助的 sysfs 入口.
  26. 这个宏定义应当放在任何函数之外, 典型地是出现在源文件的前面

  27. 模块参数支持的类型:
  28. bool 一个布尔型( true 或者 false)(相关的变量应当是 int 类型).
  29. invbool: invbool 类型颠倒了值, 所以真值变成 false, 反之亦然.
  30. charp 一个字符指针值. 内存为用户提供的字串分配, 指针因此设置.
  31. int long short uint ulong ushort

  32. 数组参数: 用逗号间隔的列表提供的值, 模块加载者也支持. 声明一个数组参数, 使用:
  33. module_param_array(name,type,num,perm);
  34. 这里 name 是你的数组的名子(也是参数名), type 是数组元素的类型, num 是一个整型变量,
  35. perm 是通常的权限值. 如果数组参数在加载时设置, num 被设置成提供的数的个数. 模块加载者拒绝比数组能放下的多的值.
  36. S_IRUGO:权限值
  37. 使用 S_IRUGO 作为参数可以被所有人读取, 但是不能改变; S_IRUGO|S_IWUSR 允许 root 来改变参数
  38. 你应当不要使模块参数可写, 除非你准备好检测这个改变并且因而作出反应
  39. */

  40. 二。
  41. Makefile
  42. ifneq ($(KERNELRELEASE),)
  43. obj-m :=param.o
  44. else
  45. KDIR:= /lib/modules/2.6.29/build
  46. all:
  47.       make -C $(KDIR) M=$(PWD) modules
  48. clean:
  49.       rm -f *.ko *.o *.mod.o *.mod.c .symvers
  50. endif

  51. 三。
  52. [root@bogon 4-1-3]# insmod param.ko
  53. Message from syslogd@ at Wed Jun 15 22:06:41 2011 ...
  54. bogon kernel: Name:feifei
  55. Message from syslogd@ at Wed Jun 15 22:06:41 2011 ...
  56. bogon kernel: Age:30

  57. [root@bogon 4-1-3]# insmod param.ko name="zhang" age=10
  58. Message from syslogd@ at Wed Jun 15 22:08:57 2011 ...
  59. bogon kernel: Name:zhang
  60. Message from syslogd@ at Wed Jun 15 22:08:57 2011 ...
  61. bogon kernel: Age:10



阅读(2587) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~