1. 用户态下编程: 通过main()来传递命令行参数

编写一个内核模块: 通过module_param()来传递命令行参数


2. module_param宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中


3. module_param使用了3个参数:变量名,它的类型,以及一个权限掩码用来做一个辅助的sysfs入口

module_param(name, type, perm);

name既是用户看到的参数名,又是模块内接受参数的变量; 

type表示参数的数据类型,是下列之一:byte, short, ushort, int, uint, long, ulong, charp, bool, invbool; 

perm指定了在sysfs中相应文件的访问权限。访问权限与linux文件爱你访问权限相同的方式管理,如0644,或使用stat.h中的宏如S_IRUGO表示。


4. 在使用宏之前,必须声明变量,典型地用法如下:

static unsigned int int_var = 0;   

module_param(int_var, uint, S_IRUGO);


5. 声明一个数组参数, 使用 module_param_array(name,type,num,perm);

name 是数组名(也是参数名),

type 是数组元素的类型,

num 是一个整型变量,

perm 是通常的权限值.


6. 实例:sudo insmdo module_param.ko who=tiger times=4


refer: http://www.linuxidc.com/Linux/2011-02/32131.htm