在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param()
module_param宏是Linux 2.6内核中新增的,该宏被定义在include/linux/moduleparam.h文件中,具体定义如下:
#define module_param(name, type, perm)
module_param_named(name, name, type, perm)
其中使用了 3 个参数:要传递的参数变量名, 变量的数据类型, 以及访问参数的权限。
module_param_array(name,type,num,perm); 这里 name 是你的数组的名子(也是参数名), type 是数组元素的类型, num 是一个整型变量, perm 是通常的权限值. 如果数组参数在加载时设置, num 被设置成提供的数的个数. 模块加载者拒绝比数组能放下的多的值. 测试模块,源程序hello.c内容如下: #include #include
#include MODULE_LICENSE("Dual BSD/GPL");
static char *who= "world";
static int times = 1;
module_param(times,int,S_IRUSR);
module_param(who,charp,S_IRUSR);
static int hello_init(void)
{
int i;
for(i=0;i printk(KERN_ALERT "(%d) hello, %s!\n",i,who);
return 0;
}
static void hello_exit(void)
{
printk(KERN_ALERT"Goodbye, %s!\n",who);
}
module_init(hello_init);
module_exit(hello_exit);
编译生成可执行文件hello
插入: # insmod hello who="world" times=5
出现5次"hello,world!":
#(1)hello,world!
#(2)hello,world!
#(3)hello,world! #(4)hello,world! #(5)hello,world! 卸载: # rmmod hello
出现: #Goodbye,world!原文地址:
http://hi.baidu.com/operationsystem/blog/item/c150423c1d7e7ce83c6d97ff.html
阅读(2941) | 评论(0) | 转发(0) |