摘要:
Input system (输入子系统) 以前写一些输入设备(键盘,鼠标等)的驱动都是字符设备,混杂设备处理的,linux开源社区的大神门看到了这大量的输入设备如此分散不堪,就想有木有一种机制,可以对分散的,不同类别的输入设备进行统一的驱动,所以才出现了输入子系统。 输入子系统引入的好处:1) 统一了物理形态各异的相似输入设备的处理功能。例如:各种鼠标,不论PS/2,usb,还是蓝牙,都被同样... 阅读全文
摘要:
总线设备驱动模型一个总线设备驱动包含三个元素:总线,驱动,设备。总线是处理器和设备之间的同道,在设备模型中,所有的设备都通过总线相连,甚至是内部的虚拟“platform”总线。 总线:描述总线的数据结构如下: 总线注册和删除使用: 下面介绍几个比较重要的总线方法: 。总线属性Buf_attribute的结构定义如下: 而总线设备和总线属性的结合和解除如下: 设备:Linux系统中的每一个总线... 阅读全文
摘要:
Mmap系统调用: Mmap函数是内存映射函数,负责把文件内容映射到进程的虚拟内存空间,通过对这段内存的读取和修改,来实现堆文件的读取和修改,而不需要再调用read,write等操作。 原型如下: 其参数含义如下: 有映射函数就有解除映射函数,munmap就是解除映射的函数: 注意:直接映射过来的区间虽然用字符型形式表示,但是不一定包含‘\0’,所以使用字符型拷贝函数的时候要慎重。最好用内存拷贝... 阅读全文
摘要:
等待队列:在linux驱动程序设计中,可以实现等待队列来实现进程的阻塞。等待队列可以看做保存进程的容器,在阻塞进程时,将进程放入等待队列,当唤醒进程时,从等待队列中取出进程。 主要方法如下: 但是我写的等待队列阻塞程序总有一些问题,就是不能成功唤醒等待程序,如下:正确版本: 错误版本: 查看了内核源码,原来是这样,如果传进去一个常数0,wait_event就永远都不会跳出去了。 Selec... 阅读全文