2012年(82)
分类: LINUX
2012-05-16 15:57:44
对于如何向模块传递参数,Linux kernel 提供了一个简单的框架。其允许驱动程序声明参数,并且用户在系统启动或模块装载时为参数指定相应值。在驱动程序里,参数的用法如同全局变量。
模块参数传入API
模块传入参数编程接口包含在头文件
表 宏函数
module_param |
|
函数原型 |
module_param(name,type,perm); |
函数功能 |
定义一个模块参数,类型由参数type指定 |
函数参数 |
n name:既是用户看到的参数名,又是 n type:表示参数的数据类型,是byte, n perm:指定了在sysfs中相应文件的访问 |
范例 |
这类的宏函数并不会声明变量,因此在使用宏之前 static unsigned int int_var = 0; module_param(int_var, uint,S_IRUGO); 如果模块参数是一个字符串时,通常使用charp类 static char *name; module_param(name, charp, 0); |
module_param_named |
|
函数原型 |
module_param_named(name,variable, |
函数功能 |
定义一个模块参数,模块内部的变量名与外部的 |
函数参数 |
n name:外部可见的参数名 n variable:源文件内部的全局变量名 其他参数同module_param |
范例 |
static unsigned int max_test = 9; module_param_name(maximum_ |
module_param_string |
|
函数原型 |
module_param_string(name,string, |
函数功能 |
定义一个模块字符串参数,并让内核在模块插 |
续表
module_param_string |
| ||
函数参数 |
n name:外部可见的参数名 n string:内部的变量名 n len:以string命名的buffer大小(可以 n perm:sysfs的访问权限(或者perm是零, | ||
范例 |
static char species[BUF_LEN]; module_param_string(specifies, | ||
module_param_array |
| ||
函数原型 |
module_param_array(name, type, nump, perm); | ||
函数功能 |
定义一个模块参数数组,并让内核在模块插入 | ||
函数参数 |
n name:模块参数数组,既是外部模块的参 n type:表示参数的数据类型 n nump:指向一个整数,其值表示有多少个参 n perm:sysfs的访问权限
| ||
范例 |
static int fish[MAX_FISH]; static int nr_fish; //最终传递数组元素个数存在nr_fish中 module_param_array(fish, int, |