关于MODULE_PARM()宏_无线空间

来源:百度文库 编辑:神马文学网 时间:2024/04/29 06:23:10
关于MODULE_PARM()宏2008-08-05 16:44

MODULE_PARM()宏定义在linux/module.h中,用于模块参数传递。
如果我们想用这个宏来传递命令行参数,那么在我们的模块中定义一个全局变量。在insmod模块时,便可以用参数的形式,将具体的实参传递给模块中的那个全局变量。
MODULE_PARM(name,type)有两个参数,一个是这个全局变量的名称,另一个是这个全局变量的类型。
而他的类型有一下几种:
b:比特型
h:短整型
i:整型
l:长整型
s:字符串型
在传递字符串型的参数时,这个全局变量需要在模块中用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时没有传入参数,模块会使用这些默认值,而如果我们传入参数,则这些默认值将被替换。