在Linux中,module_param用于定義和注冊模塊參數。模塊參數是在加載內核模塊時可以通過命令行或配置文件進行配置的變量。通過module_param宏定義模塊參數后,可以通過insmod命令加載模塊時使用參數進行初始化。
module_param宏有三個參數:
name: 模塊參數的變量名。
type: 模塊參數的數據類型。
perm: 模塊參數的訪問權限。
示例:
#include <linux/module.h>
#include <linux/moduleparam.h>
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/<module_name>/parameters目錄下的文件查看和修改模塊參數的值。例如,在上面的示例中,可以使用以下命令查看和修改my_param的值:
cat /sys/module/my_module/parameters/my_param
echo 456 > /sys/module/my_module/parameters/my_param