第15篇:Linux设备驱动程序入门<二>
Q:如何理解设备驱动程序模块的基本结构?
A:一个规范的驱动模块包含的结构按顺序由头文件、模块参数、模块功能函数、模块加载函数、模块卸载函数和模块许可声明组成,以下简单介绍其中必须的组成部分:
1. 头文件:驱动模块会使用内核中的许多函数,所以必须包含必要的头文件。module.h(包含了加载模块时需要使用的大量符号和函数定义)和init.h(包含了模块加载函数和模块卸载函数的宏定义)是所有驱动模块都必须包含的。
2. 模块加载函数:模块加载时要执行的函数,是模块的初始化函数,如main()函数一样。
3. 模块卸载函数:模块卸载时要执行的函数,清除了加载函数里分配的资源。
4. 模块许可声明:表示模块受内核支持的程度。使用MODULE_LICENSE表示模块的许可权限。内核若加载无许可声明的模块,会收到内核加载了一个非标准模块的警告。内核可以识别的许可权限如下。
注:后续实验里我们编写的设备驱动程序模块的许可声明写MODULE_LICENSE("GPL")即可。