驱动程序的参数值可由insmod或者modprobe在装载模块时设置,后者还可以从配置文件(/etc/modules.conf)中获得参数赋值。这些命令能够在命令行中接受整型和字符串型赋值。如:模块需要获得一个叫做skull_ival的整型参数和一个叫做skull_sval的字符串型参数:
insmod skull skull_ival=666 skull_sval="the beast"
当然,模块必须能够访问这些参数。参数由定义在module.h中的宏MODULE_PARM声明,它必须包含:变量名和描述变量类型的字符串。放在原文件的起始位置
int skull_ival=0;
char *skull_val;
MODULE_PARM(skull_ival,"i");
MODULE_PARM(skull_sval,"s");
五种类型:b,一个字节byte;h,短整型 两个byte;i,整型;l 长整型;s,字符串。
作为一个例子,至少有两个元素、最多不超过4个元素的数组可定义为:
int skull_array[4];
MODULE_PARM(skull_array,"2-4i");
还有一个MODULE_PARM_DESC的宏,允许开发者为模块参数提供描述性文字,描述性文字存储在目标文件中,能够用类似objdump的工具查看:
int base_port = 0x300;
MODULE_PARM(base_port,"i");
MODULE_PARM_DESC(base_port,"The base I/O port(default 0x300)");
#include void *kmalloc(unsigned int size,int priority);
void kfree(void *obj);
函数malloc和free的内核版。使用GFR_KERNEL作为priority参数值。