异步通知Fasync
异步通知:当驱动程序可读写时,给应用程序发送一个信号SIGIO,应用程序执行信号处理程序。
应用程序如何使用异步通知机制
fcntl(F_SETOWN) // 设置调用进程对描述符的拥有关系,内核知道往哪个进程发送异步信号。
fcntl(F_SETFL) // 设置 O_ASYNC标志。导致fasync()驱动方法调用
sigaction() //注册SIGIO处理函数
驱动程序如何使用异步通知
fasync()
{
fasync_helper();
}
interrupt_handler()
{
kill_fasync(SIGIO,POLL_IN或POLL_OUT) ;发送 SIGIO给对应进程
}
如果异步通知要处理多个设备上来的异步事件时,需要借助select等机制。