全部博文(396)
发布时间:2016-09-24 14:31:01
驱动程序运行在内核空间中,应用程序运行在用户空间中,两者是不能直接通信的。但在实际应用中,在设备已经准备好的时候,我们希望通知用户程序设备已经ok,用户程序可以读取了,这样应用程序就不需要一直查询该设备的状态,从而节约了资源,这就是异步通知。好,那下一个问题就来了,这个过程如何实现呢?简单,两方面的.........【阅读全文】
发布时间:2016-09-23 16:50:36
1. 无线网络驱动(ath9k_htc) ath9k_htc是一个基于USB接口的SoftMAC无线网络适配器。为了其驱动能正常工作,首先必须调用usb_register来注册驱动定义的usb_driver,以借助USB Core的力量来处理与USB协议相关的事件。其代码如下:[cpp] view plain copy static .........【阅读全文】
发布时间:2016-09-23 13:21:33
Run-time PM. 每个device或者bus都会向run-time PM core注册3个callbackstruct dev_pm_ops { ... int (*runtime_suspend)(struct device *dev); int (*runtime_resume)(struct device *dev); int (*runtime_idle)(struct device *dev); ...};.........【阅读全文】
发布时间:2016-09-23 11:47:44
asmlinkage/FASTCALL()/fastcall这三个宏指定了函数参数的传递方式。asmlinkage修饰的函数,其参数通过堆栈传递。FASTCALL()/fastcall,此二者实际上是一样的作用。在Intel i386架构中,它们所修饰的函数,其前三个参数分别通过通用寄存器EAX,ECX和EDX来传递。它们定义于include/asm-i386/linkage.h:#define asmlink.........【阅读全文】
发布时间:2016-09-23 10:23:46
最近研究进程间通信,遇到了idr相关的函数,为了扫清障碍,先研究了linux的idr机制。 所谓IDR,其实就是和身份证的含义差不多,我们知道,每个人有一个身份证,身份证只是 一串数字,从数字,我们就能知道这个人的信息。同样道理,idr的要完成的任务是给要管理的对象分配一个.........【阅读全文】