在设备驱动和应用程序的异步通知交互中,仅仅在应用程序端捕获信号时不够的,因为信号 没有的源头在设备驱动端。因此,应该在合适的时机让设备驱动释放信号 ,在设备驱动程序中增加信号释放的相关代码。
设备驱动中异步通知编程比较简单,组要用到一项数据结构和两个函数。数据结构式fasync_struct结构体,两个函数分别如下:
处理FASYNC标志变更的函数。
int fasync_helper(int fd,struct file *flip,int mode,struct fasync strcuct **fa)
释放信号用的函数
void kill_fasync(struct fasync_struct **fa,int sig,in band);
和其他的设备驱动一样,将fasync_struct 结构体指针放在设备结构体重 仍然是 最佳选择,
*********************代码说明*********************************
在设备资源可以获得时,应该调用kill_fasync()释放SIGIO信号,可读时第三个参数设置为POLL_IN,可写时
第三个参数设置为POLL—OUT
************************************************************