Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1408746
  • 博文数量: 120
  • 博客积分: 182
  • 博客等级: 入伍新兵
  • 技术积分: 2278
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-19 16:31
文章分类

全部博文(120)

文章存档

2015年(12)

2014年(13)

2013年(40)

2012年(55)

分类: LINUX

2012-12-14 20:08:32

      最近在学中断时,看到一个内核模块的例子中使用了module_param()这样一个宏来传递命令行输入的参数。一时好奇就细细搜罗了一下关于这个宏的详细用法,以后用得着的。
       其实module_param这个宏的作用就类似用户态编程时通过mian()函数在命令行下传递参数一样。也就是说在内核模块中用module_param传递命令行下输入的参数。
        这个函数定义在moduleparam.h中
#define (, , )               \
                         (, , , )
可以知道,module_param使用了3个参数:
              name——变量名;
              type——指代命令行参数的类型,模块支持的参数类型有很多,有byte, short, ushort, int, uint, long, ulong    
charp(字符指针型),bool(一个布尔值,0/1,y/n,Y/N),invbool(颠倒了bool值,使得真值变成了false,false变成了true)
              perm——指代操作权限,如果perm设为0,表示没有sysfs项,否则取值0444表示完全可读,取0644表示toot具有可写权限等等。也可以使得模块源文件内部的变量名和外部参数名是不相同的,这通过module_param_named
定义。在module_param_named()中,第一个name是外部可见的参数名,第二个name是源文件内部的全局变量,而
module_param()通过module_param_named()实现。
     基本上就是这些了,可能不是很全面。最后写了一个小例子来体会一下:

加载:sudo insmod module_param.ko test_char=helianthus test_number=1并dmeg以后:


阅读(3852) | 评论(0) | 转发(0) |
0

上一篇:Android介绍

下一篇:调试技术

给主人留下些什么吧!~~