在加载一个.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条评论
快来发表一下你的评论吧 !