本章介绍一些关于模块和内核编程的必要概念,还要创建和运行一个完整的模块,看看一些被所有模块共享的基本代码。为避免一次抛出太多概念,本章只讨论模块,不涉及到任何特定的设备类别。本章在最后对于介绍过的每个内核项目(函数、变量、头文件、宏)都给出了参考章节。
1 建立测试系统
从本章开始会提供一些示例模块来展示编程概念。这些示例模块应该可以在任何2.6.x版本内核上运行,包括发行版提供的内核。但是建议使用可以从kernel.org下载的主线内核,因为发行版提供的内核可能打了很多补丁,偏离了主线,甚至可能会修改了设备驱动看到的内核API。
为2.6.x版本内核编译模块要求在系统上存在已经配置和编译链接好的内核源代码树,因为2.6版本的模块需要与内核源代码树中的一些目标文件(obj文件)链接到一起。所以现在要做的就是获取内核源代码,编译内核并且安装到系统中。
2 Hello World 模块
代码如下:
#include #include MODULE_LICENSE("Dual BSD/GPL"); |