关于module_param()

3835阅读 0评论2012-12-14 Helianthus_lu
分类:LINUX

      最近在学中断时,看到一个内核模块的例子中使用了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以后:


上一篇:Android介绍
下一篇:调试技术