模块内容
--------------------------------------------------------------------------------
模块中除了包含有实现具体功能的源代码外,还有一些其他的内容。
所有的模块代码中都包含下面两个头文件:
#include
#include
module.h包含有可装载模块需要的大量符号和函数的定义。包含init.h的目的是制定初始化和
清除函数。大部分模块还包含有moduleparam.h头文件,这样我们就可以在装载模块时像模块传
递参数。
模块应该指定代码所使用的许可证,但这不是必需的。例如,模块的许可证可使用下面的代码指
定:
MODULE_LECENSE("GPL");
内核能够识别的许可证有“GPL”(任一版本的GNU通用公共许可证)、“GPL v2”(GPL版本2
)、“GPL and additional rights(GPL及附加权利)”、“Dual BSD/GPL(BSD/GPL双重许
可证)”、“Dual MPL/GPL(MPL/GPL双重许可证)”以及“Proprietary(专有)”。如果一
个模块没有显示地标记为上述内核可识别的许可证,则会被假定是专有的,而内核装载这种模块
就会被“污染”。内核开发者不太愿意帮助因装载专有模块而遇到问题的用户。
可在内核模块中包含的其他描述性定义包括MODULE_AUTHOR(模块作者)、
MODULE_DESCRIPTION(用来说明模块用途的简短描述)、MODULE_VERSION(版本号)、
MODULE_ALIAS(模块的别名)以及MODULE_DEVICE_TABLE(用来告诉用户空间模块所支持的设
备)。
上述MODULE_声明可出现在源文件中源代码函数以外的任何地方。但新近的内核编码习惯是将这
些声明放在文件的最后。
阅读(2040) | 评论(0) | 转发(0) |