1. 定义模块参数的方法:
module_param(name, type, perm);
其中,name:表示参数的名字;
type:表示参数的类型;
perm:表示参数的访问权限;
2. 数组类型模块参数的定义:
用逗号间隔的列表提供的值;
声明一个数组参数:
module_param_array(name, type, num, perm);
其中,name:表示数组的名字;
type:表示参数的类型;
num :表示数组中元素数量;
perm:表示参数的访问权限;
3.type支持的基本类型有:
bool :布尔类型
invbool:颠倒了值的bool类型;
charp :字符指针类型,内存为用户提供的字符串分配;
int :整型
long :长整型
short :短整型
uint :无符号整型
ulong :无符号长整型
ushort :无符号短整型
4.注意事项:
在访问权限参数,不能配置可写的权限,内核对模块的要求高,如果带可写的权限,编译不能通过;
权限可以设置为0444;
#include <linux/init.h>
#include <linux/module.h>
static int iType = 0;
module_param(iType, int, 0444);
static bool bType = 0;
module_param(bType, bool, 0444);
static unsigned char cType = 0;
module_param(cType, byte, 0444);
static char* sType = "123";
module_param(sType, charp, 0444);
static int __init param_module_init(void)
{
printk("param module init.\n");
printk("iType = %d, bType = %d, cType = %c, sType = %s\n", iType, bType, cType, sType);
return 0;
}
static void __exit param_module_exit(void)
{
printk("param module exit.\n");
}
module_init(param_module_init);
module_exit(param_module_exit);
MODULE_DESCRIPTION("param module");
MODULE_LICENSE("GPL");