Linux基础:在驱动中增加异步通知的例子

2014-11-24 11:57:31 · 作者: · 浏览: 3

异步通知的意思是:一旦设备就绪,则主动通知应用程序,这样应用程序就根本不需要查询设备的状态,


这一点非常类似于硬件上的“中断”的概念,比较准确的称谓是“信号驱动的异步I/O”。信号是在软件层次上对


中断机制的一种模拟,在原理上一个进程接收到一个信号与处理器接收到一个中断请求是一样的。


1>在把驱动从2.6.32 移植到2.6.36时 报错


才发现2.6.36的file_operations结构发生了重大变化。(但基本的思想还是不变的)


2>/home/kernel_test/globalfifo/globalfifo.c:245:2: warning: initialization from incompatible pointer type


出现此种warnning 的原因 “不兼容指针类型初始化


是你定义的函数类型与接口函数的类型不一样如 把 把返回值 long 定义成了 int


ssize_t (*write) (struct file *, const char __user *, size_t, loff_t *);


少写const 也会引起 warning 因为在这里const所起的作用是 避免函数使用指针去改变了传进来的值




以下是增加(红色字体)异步通知后的globalfifo 的驱动程序:


57 struct globalfifo_dev *dev = filp->private_data;


58


59 /*将文件从异步通知列表(相关进程列表)中删除*/