【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目录下的参数】