【发布时间】:2014-08-18 03:23:45
【问题描述】:
当内核空间发生事件时如何通知用户空间应用程序?
当数据到达某个 GPIO 时,硬件会产生中断。
该数据被复制到内核缓冲区。此时,我希望驱动程序通知应用程序它可以调用read函数将数据从内核缓冲区复制到用户空间缓冲区。
我想过使用epoll方法,但epoll表示设备是否准备好读取。我想要的是,epoll 指示内核缓冲区何时已满。
还有,有没有办法修改驱动程序中poll_wait() 函数的行为?
【问题讨论】:
-
当有数据要读取时,读取设备。那么究竟是什么问题呢?
-
问题是,驱动从设备读取数据到内核缓冲区后,产生了中断。在 ISR 中,我希望 poll_wait() 函数唤醒并将掩码设置为 POLLIN。 poll_wait() 函数是否在我们的控制范围内?
-
看看
poll_wait的第二个参数。 -
这是一个指向 wait_queue_head_t 的指针。我可以在 ISR 中使用 wake_up() 吗?
-
这就是它的用途。你有没有费心阅读some documentation?
标签: linux linux-kernel linux-device-driver epoll