在Linux中,module_param用于定义和注册模块参数。模块参数是在加载内核模块时可以通过命令行或配置文件进行配置的变量。通过module_param宏定义模块参数后,可以通过insmod命令加载模块时使用参数进行初始化。
module_param宏有三个参数:
-
name: 模块参数的变量名。
-
type: 模块参数的数据类型。
-
perm: 模块参数的访问权限。
示例:
#include#include static int my_param = 0; module_param(my_param, int, S_IRUGO); static int __init my_module_init(void) { // 在模块初始化函数中使用模块参数 printk(KERN_INFO "my_param = %d\n", my_param); return 0; } static void __exit my_module_exit(void) { // 模块退出函数 } module_init(my_module_init); module_exit(my_module_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("A simple example Linux module.");
在上面的示例中,定义了一个名为my_param的整型模块参数,访问权限为只读。在模块初始化函数中使用了该参数。加载模块时可以通过命令行参数或配置文件指定my_param的值。
加载模块时使用命令行参数的示例:
insmod my_module.ko my_param=123
加载模块时使用配置文件的示例:
echo "my_param=123" > /etc/modprobe.d/my_module.conf insmod my_module.ko
在加载模块后,可以通过/sys/module/
cat /sys/module/my_module/parameters/my_param echo 456 > /sys/module/my_module/parameters/my_param