发布时间:2012-07-23 16:56:54
linux 内核头文件提供了方便来管理你的符号的可见性, 因此减少了命名空间的污染( 将与在内核别处已定义的符号冲突的名子填入命名空间), 并促使了正确的信息隐藏. 如果你的模块需要输出符号给其他模块使用, 应当使用下面的宏定义: EXPORT_SYMBOL(name);EXPORT_SYMBOL_GPL(name); 上面宏定义的任一个使得给定的.........【阅读全文】
发布时间:2012-07-23 16:48:03
编译模块点击(此处)折叠或打开如下书写你的 makefile: # If KERNELRELEASE is defined, we've been invoked from the# kernel build system and can use its language..........【阅读全文】
发布时间:2012-07-23 16:22:10
在我们深入之前, 有必要强调一下内核模块和应用程序之间的各种不同.不同于大部分的小的和中型的应用程序从头至尾处理一个单个任务, 每个内核模块只注册自己以便来服务将来的请求, 并且它的初始化函数立刻终止. 换句话说, 模块初始化函数的任务是为以后调用模块的函数做准备; 好像是模块说, " 我在这里, 这是我.........【阅读全文】
发布时间:2012-07-23 16:05:04
点击(此处)折叠或打开#include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL");static int hello_init(void){  .........【阅读全文】
发布时间:2012-07-20 15:24:45
以 LInux 的方式看待设备可区分为 3 种基本设备类型. 每个模块常常实现 3 种类型中的 1 种, 因此可分类成字符模块, 块模块, 或者一个网络模块字符设备 一个字符( char ) 设备是一种可以当作一个字节流来存取的设备( 如同一个文件 ); 一个字符驱动负责实现这种行为. 这样的驱动常常至少实现 open, close,.........【阅读全文】