Linux内核模块参数

在加载模块的时候,可以向模块传递参数值,供模块内部使用。

使用方法

头文件:linux/moduleparam.h
程序中:

1
2
int disk_size = 1024;
module_param_named(size,disk_size,int,S_IRUGO);

加载模块时:
#insmod param.ko size=2048
此时,模块会用size的值2048,去替换模块内部disk_size的默认值1024。

代码实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h>

int disk_size=1024;
module_param_named(size,disk_size,int,S_IRUGO);

static int __init param_init(void)
{
printk("module init:disk_size now:%d\n",disk_size);
return 0;
}

static void __exit param_exit(void)
{
printk("exit module.\n");
}

module_init(param_init);
module_exit(param_exit);
MODULE_LICENSE("GPL");

运行结果

[root@localhost param]# insmod param.ko size=2048
[root@localhost param]# dmesg
[158889.935447] module init:disk_size now:2048

想要简化,使得输入参数和代码内参数同名,则使用:
module_param(disk_size,int,S_IRUGO);