
linux驱动
ghjk014
这个作者很懒,什么都没留下…
展开
-
linux驱动加载时错误“Unknown symbol in module”的分析与处理
这是linux kernel 2.6.26 之后版本的bug (详细描述, 请看http://bugzilla.kernel.org/show_bug.cgi?id=12446)并且这个bug不会被fix解决办法是把mod_a的Module.symvers放到mod_b的当前路径,从而编译mod_b,符号信息会自动连接进去.或者在mod_b的makefile中使用KBUILD_EX转载 2013-03-31 11:18:08 · 869 阅读 · 0 评论 -
内核编译错误解决方法
CHK include/generated/uapi/linux/version.h CHK include/generated/utsrelease.hmake[1]: “include/generated/mach-types.h”是最新的。 CC kernel/bounds.scc1: error: unrecognized co原创 2013-04-21 17:40:50 · 704 阅读 · 0 评论 -
linux内核模块编程10
Chapter 10. Replacing PrintksTable of Contents替换printk让你的键盘指示灯闪起来替换printk在the Section called 使用 X带来的问题 in Chapter 1中, 我说过最好不要在X中进行内核模块编程。在真正的内核模块开发中的确是这样。 但在实际应用中,你想在任何加载模块的tty[1]终端中显示信息。转载 2013-04-16 10:40:18 · 358 阅读 · 0 评论 -
linux内核模块编程8
Chapter 8. System Calls系统调用到目前为止,我们所做的只是使用完善的内核机制注册/proc文件和处理设备的对象。如果只是想写一个设备驱动, 这些内核程序员设定的方式已经足够了。但是,你不想做一些不寻常的事吗, 想使你的系统看起来不一样吗?当然,这取决你自己。这里可是一个危险的地方。下面的这个例子中,我关闭了系统调用 open()。这意味着我无法打开任何文件,执转载 2013-04-16 10:36:34 · 296 阅读 · 0 评论 -
linux内核模块编程7
Chapter 7. Talking To Device Files与设备文件对话 (writes and IOCTLs)设备文件是用来代表相对应的硬件设备。绝大多数的硬件设备是用来进行输出和输入操作的, 所以在内核中肯定有内核从进程中获得发送到设备的输出的机制。这是通过打开一个设备文件然后 向其中进行写操作来实现的,如同对普通文件的写操作。在下面的的例子中,这是通过 device_wri转载 2013-04-16 10:35:08 · 287 阅读 · 0 评论 -
linux内核模块编程5
Chapter 5. The /proc File System关于 /proc 文件系统在Linux中有另一种内核和内核模块向进程传递信息的方法,那就是通过 /proc文件系统。它原先设计的目的是为查看进程信息 提供一个方便的途径,现在它被用来向用户提供各种内核中被感兴趣的内容。像文件 /proc/modules里是已加载模块的列表,文件/proc/meminfo 里是关于内存使用的信息转载 2013-04-16 10:32:43 · 301 阅读 · 0 评论 -
linux内核模块编程4
Chapter 4. Character Device Files字符设备文件关于file_operations结构体结构体file_operations在头文件 linux/fs.h中定义,用来存储驱动内核模块提供的对 设备进行各种操作的函数的指针。该结构体的每个域都对应着驱动内核模块用来处理某个被请求的 事务的函数的地址。举个例子,每个字符设备需要定义一个用来读取设备数据的转载 2013-04-16 10:30:29 · 320 阅读 · 0 评论 -
linux内核模块编程2
Chapter 2. Hello WorldTable of ContentsHello, World (part 1): 最简单的内核模块编译内核模块Hello World (part 2)Hello World (part 3): 关于__init和__exit宏Hello World (part 4): 内核模块证书和内核模块文档说明从命令行传递参数给内核模块转载 2013-04-16 10:26:08 · 374 阅读 · 0 评论 -
linux内核模块编程3
Chapter 3. Preliminaries内核模块和用户程序的比较内核模块是如何开始和结束的用户程序通常从函数main()开始,执行一系列的指令并且 当指令执行完成后结束程序。内核模块有一点不同。内核模块要么从函数init_module 或是你用宏module_init指定的函数调用开始。这就是内核模块 的入口函数。它告诉内核模块提供那些功能扩展并且让内核准备好在需要时调用它。转载 2013-04-16 10:27:38 · 284 阅读 · 0 评论 -
linux内核模块编程1
http://bbs.chinaunix.net/thread-852547-1-1.htmlForewordTable of Contents作者声明版本和注意感谢译者注作者声明《Linux内核驱动模块编程指南》最初是由Ori Pomerantz为2.2版本的内核编写的 ,后来,Ori将文档维护的任务交给了Peter Jay Salzman,Peter完成了2转载 2013-04-16 10:21:44 · 299 阅读 · 0 评论 -
linux内核模块编程9
Chapter 9. Blocking Processes阻塞进程Enter Sandman当别人让你做一件你不能马上去做的事时,你会如何反映?如果你是人类的话,而且对方也是人类的话, 你只会说:“现在不行,我忙着在。闪开!”但是如果你是一个内核模块而且你被一个进程以同样的问题困扰, 你会有另外一个选择。你可以让该进程休眠直到你可以为它服务时。毕竟,这样的情况在内核中时时刻刻都在发生转载 2013-04-16 10:38:59 · 278 阅读 · 0 评论 -
linux内核模块编程6
Chapter 6. Using /proc For Input使用 /proc 作为输入现在我们有两种从内核模块获得输出的方法:我们可以注册一个设备驱动并用 mknod生成一个设备文件,或者我们可以建立一个 /proc文件。这样内核就可以告诉我们重要的信息。 剩下的唯一问题是我们没法反馈信息。第一种方法是向/proc文件系统写入信息。由于 /proc 文件系统是为内核输出其运行信转载 2013-04-16 10:33:55 · 258 阅读 · 0 评论