内核的驱动以两种方式存在,那么传给内核的参数该如何弄呢?
1. 内核以驱动方式存在的,在insmod ko文件的时候,跟在命令后面给出参数,比如:
insmod hello_world.ko parameter1=50 parameter2='welcome'
但是parameter1和parameter2必须在内核已经做了登记,需要调用接口:
module_param,比如:
MODULE_PARM_DESC(parameter1, " just for debug")
module_param(parameter1, int, 0644);
也可以通过module_param_array(para , type , &n_para , perm) 来一个para数组,perm是指定了权限
perm 指定了在sysfs中相应文件的访问权限。访问权限与linux文件访问权限相同的方式管理,如0644,或使用stat.h中的宏如S_IRUGO表示。
0 表示完全关闭在sysfs中相对应的项。
#define S_IRUSR 00400 文件所有者可读
#define S_IWUSR 00200 文件所有者可写
#define S_IXUSR 00100 文件所有者可执行
#define S_IRGRP 00040 与文件所有者同组的用户可读
#define S_IWGRP 00020
#define S_IXGRP 00010
#define S_IROTH 00004 与文件所有者不同组的用户可读
#define S_IWOTH 00002
#define S_IXOTH 00001
2. 内核以image方式存在的,会在/sys/module/parameters/下有对应的文件,直接用cat 修改后,kernel/user空间都会看到这个值也跟这变。