内核模块可选信息

Posted on 2015-02-16 17:32  Bumble_Bee  阅读(137)  评论(0编辑  收藏  举报

前一次讲的三个要素是编写内核模块必不可少的三个信息,今天讲的这些是可选信息,可写可不写。
  一、模块申明
    MODULE_LICENSE("GPL");                            声明模块遵守的协议
    MODULE_AUTHOR("Bumble Bee");                声明模块编写的作者
    MODULE_DESCRIPTION("print helloworld");  声明模块的功能
    MODULE_VERSION("1.0");                             声明模块版本
  二、模块参数
    通过宏module_param(name,type,perm)来声明。其中name为变量名,type为变量类型,perm未访问权限。变量类型有 int,bool,charp三种;访问权限有S_IRUGO(读)、S_IWUSR(写)两种。用法如下:

    

    在安装内核模块时就可以输入参数了

    

  三、符号导出
            当一个模块调用另外一个模块中实现的函数时需要用到这个。例如现在有两个模块,一个helloworld.ko,一个add.ko。在add模块中实现了 一个add函数,想要在helloworld模块中调用它,如果不进行符号导出的话就会出现这样的错误。  

    

    提示找不到add这个函数符号。所以在add.c中要加入符号导出,即EXPORT_SYMBOL(函数名)。

    

    在helloworld.c中要将add函数外部输出

    

    这样就可以在helloworld.ko内核模块中调用add.ko模块中的变量了。