在Linux內核中,module_param
函數用于定義并注冊一個模塊參數。它的原型如下:
int module_param(name, type, perm);
其中,name
是參數的變量名,type
是參數的數據類型,perm
是參數的訪問權限。
該函數需要在模塊初始化函數(如module_init
)中調用,用于注冊模塊參數。
下面是module_param
函數的使用示例:
#include <linux/module.h>
#include <linux/moduleparam.h>
MODULE_LICENSE("GPL");
static int my_param = 0;
module_param(my_param, int, S_IRUSR | S_IWUSR);
static int __init my_module_init(void)
{
// 在模塊初始化函數中使用my_param參數
printk(KERN_INFO "my_param = %d\n", my_param);
return 0;
}
static void __exit my_module_exit(void)
{
// 在模塊退出函數中使用my_param參數
printk(KERN_INFO "my_param = %d\n", my_param);
}
module_init(my_module_init);
module_exit(my_module_exit);
在上述示例中,我們定義了一個名為my_param
的整型參數,并使用module_param
函數注冊它。參數的訪問權限被設置為用戶可讀可寫。
在模塊初始化函數和退出函數中,我們分別使用my_param
參數輸出其值。
需要注意的是,模塊參數的值可以通過內核命令行參數或sysfs
文件系統進行設置和獲取。例如,可以通過在啟動內核時添加my_param=123
來設置my_param
參數的值,或者通過/sys/module/模塊名/parameters/my_param
文件來獲取和設置參數的值。