Chinaunix首页 | 论坛 | 博客
  • 博客访问: 136120
  • 博文数量: 38
  • 博客积分: 306
  • 博客等级: 二等列兵
  • 技术积分: 335
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-29 15:19
文章分类

全部博文(38)

文章存档

2013年(23)

2012年(15)

我的朋友

分类: LINUX

2012-11-28 15:27:31

     MODULE_PARM包含两个参数,一个是module名称,一个是数据类型,比如"h":短整型,"i":整型,"l":长整型,"s":字符串。如果是"a-bi"这样的,就表示至少占据a个整型存储单元而至多占据b个。
    在传递字符串型的参数时,这个全局变量需要在模块中用Char *来声明!insmod会自动为其分配内存空间.
例如:
int a = 3;
char *st;
MODULE_PARM(a,”i”);
MODULE_PARM(st,”s”);
在insmod是我们加这样的参数:
insmode a.o “a = 3″, “st = hello world”
    这里最重要的是,MODULE_PARM()也支持我们最常用的数组类型.用短线’-'把两个数字分开,分别表示数组参数中的最小位数和最大位数.例如:
int array[8];
MODULE_PARM(array,”1-8i”);
在命令行我们使用加这样的参数:
insmod a.o “array = 38745,123,4000″ 
    在加载模块编程时,我们往往给这些全局变量以默认值,如果我们insmod时没有传入参数时,模块会使用这些默认值,而如果我们传入参数时,这些默认值便被覆盖掉.
    在改成module_param的时候,如果对应的变量是单个就用module_param,如果是一个数组就用module_param_array;module_param有三个参数:module名称、数据类型和在sysfs中的权限,最后一个一般没有特殊要求的话可以直接写0。module_param_array多一个参数,可以通过一个指向某个整型变量的指针来存储事实上的数据尺寸。没有这个需求的话,把那个指针用作NULL就可以了。
阅读(1842) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~