从命令行传递参数给内核模块
2006-09-12 16:01
316 查看
其实关于MODULE_PARM的问题前几天就看到过了.也大致的学习了一下,但是没有认真的把这些东西记下来.以便以后遇到了又不懂的时候查看.
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时没有传入参数时,模块会使用这些默认值,而如果我们传入参数时,这些默认值便被覆盖掉.
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时没有传入参数时,模块会使用这些默认值,而如果我们传入参数时,这些默认值便被覆盖掉.
相关文章推荐
- 内核子系统或设备驱动可以直接编译到内核,也可以编译成模块,如果编译到内核,可以使用前一节介绍的方法通过内核启动参数来向它们传递参数,如果编译成模块,则可以通过命令行在插入模块时传递参数,或者在运行时,
- 从命令行传递参数给内核模块 (MODULE_PARM)
- 从命令行传递参数给内核模块 (MODULE_PARM)
- 使用module_param来向内核模块传递参数
- 如何给内核模块传递参数
- Linux 内核 给模块传递参数
- 用户向内核模块传递参数例子
- 一个内核模块例子(实现调用其他模块中的方法,传递参数等)
- uboot向内核模块传递参数的方法
- .Linux设备驱动程序学习(0)——设备驱动介绍& Hello, world!模块 内核参数传递
- 内核模块参数传递
- 内核模块 module_param()传递参数
- Linux设备驱动第二天(数组参数传递,模块相互调用、printk、内核GPIO函数、系统调用)
- 内核之旅 --- 内核模块学习1---内核模块参数传递
- 使用module_param来向内核模块传递参数
- ubuntu 内核模块编程+模块参数传递+模块符号表输出
- 内核之旅 --- 内核模块学习1---内核模块参数传递
- 使用module_param来向内核模块传递参数
- insmod 内核模块参数传递
- insmod 内核模块参数传递