Chinaunix首页 | 论坛 | 博客
  • 博客访问: 593324
  • 博文数量: 88
  • 博客积分: 4769
  • 博客等级: 中校
  • 技术积分: 989
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-24 02:31
文章分类

全部博文(88)

文章存档

2012年(4)

2011年(35)

2010年(49)

分类: LINUX

2011-04-24 23:48:56

模块内容
--------------------------------------------------------------------------------

模块中除了包含有实现具体功能的源代码外,还有一些其他的内容。

所有的模块代码中都包含下面两个头文件:

    #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) |
给主人留下些什么吧!~~