在加载一个.ko模块时,也可以像应用程序那样,通过命令行传入一些参数,这个过程发生在调用模块初始化函数之前。
内核支持的参数类型有:bool
、invbool
(反转值bool类型)、charp
(字符串指针)、short
、int
、long
、ushort
、uint
、ulong
。这些类型又可以复合成对应的数组类型。
具体用法,在驱动中定义三个变量baudrate
、port
、name
:
static int baudrate = 9600;
static int port[4] = {0,1,2,3};
static char *name = "user";
module_param(baudrate, int, S_IRUGO);
module_param_array(port, int, NULL, S_IRUGO);
module_param(name, charp, S_IRUGO);
使用module_param
和module_param_array
宏声明这些变量为模块参数。说明:
module_param(name,type,perm)
module_param_array(name,type,nump,perm)
name
:变量的名字
type
:变量或数组元素的类型
nump
:数组元素个数的指针,可选
perm
:在sysfs文件系统中对应文件的权限属性。
权限的取值参考
头文件。
修改这三个变量的值,即加载模块时传参:
insmod user.ko baudrate=115200 port=1,2,3,4 name="virtual-serial"
全部0条评论
快来发表一下你的评论吧 !