1、所有模块都包含这两个头文件:
#include <linux/module.h> #include <linux/init.h>
module.h中包含可装载模块需要的大量的符号和定义,init.h是指定初始化和清除函数。
2、显示的标记内核模块许可证。
MODULE_LICENSE("GPL") 如果一个模块没有显示的标记上述内核可识别的许可证,则内核会被认为这种模块会”污染“内核,从而引发用户问题。
3、#include <linux/sched.h>
包含驱动程序使用的大部分内核API的定义,包括睡眠函数以及各种变量声明。
4、struct task_struct *current;当前进程。
5、#include <linux/version.h> 包含内核版本信息的头文件。
6、#include <linux/kernel.h>
7、字符设备头文件:<linux/cdev.h>