【0002】模块参数--mod_param()
1.函数说明
在用户态下编程可以通过main()的参数来传递命令行参数,而编写一个内核模块则通过module_param()来传递参数。
module_param(name, type, perm)是一个宏,表示向当前模块传入参数。参数用 module_param 宏定义来声明, 它定义在 moduleparam.h中。
这里的 S_IRUGO=(S_IRUSR|S_IRGRP|S_IROTH)
2.源码及测试
【源码】
1 /*************************** 2 *FILE_NAME:mod_param.c 3 * 4 **************************/ 5 #include <linux/init.h> 6 #include <linux/module.h> 7 8 static int mod_num = 10; 9 module_param(mod_num,int,0644); 10 11 static char *mod_name = "mod_param"; 12 module_param(mod_name,charp,0644); 13 14 static int __init mod_param_init(void) 15 { 16 printk(KERN_INFO "mod_param_init enter...\n" ); 17 printk(KERN_INFO "mod_num: %d\n",mod_num ); 18 printk(KERN_INFO "mod_name: %s\n",mod_name ); 19 20 return 0; 21 } 22 23 static void __exit mod_param_exit(void) 24 { 25 printk(KERN_INFO "mod_param_exit...\n" ); 26 } 27 28 module_init(mod_param_init); 29 module_exit(mod_param_exit); 30 MODULE_DESCRIPTION("mod param test"); 31 MODULE_LICENSE("GPL v2"); 32 MODULE_AUTHOR("OzTaking");
【测试1】使用默认参数
[查看内核打印信息]
【dmesg方法】
【kern.log方法】
【测试2】从命令行传入参数并修改参数
【注意】
①传入参数的“=”两边不能有空格;
②名称单双引号都行;
【查看/sys目录下的参数】