前一次讲的三个要素是编写内核模块必不可少的三个信息,今天讲的这些是可选信息,可写可不写。
一、模块申明
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模块中的变量了。