多个应用程序对一个描述符进行轮询



多个进程(不是线程)可以在阻塞模式下轮询设备描述符(例如:/dev/xyx)并在驱动程序返回POLLIN时被唤醒吗?

详细信息:我有一个驱动程序,并支持从驱动程序到用户空间应用程序的异步事件通知,我在驱动程序中实现了投票功能。我希望多个进程在我的描述符/dev/xyz上进行轮询,在进行轮询时,驱动程序立即将它们放在.poll函数的等待队列上,以便它们阻塞,直到驱动程序返回POLLIN。

现在,当一个进程在描述符上被阻塞时,它工作得很好,所以当驱动程序执行POLLIN时,poll()解除阻塞,我处理它。但是,如果在/dev/xyz上有多个进程阻塞(通过poll),并且如果驱动程序发送POLLIN,则只有一个进程被解除阻塞,另一个进程仍然阻塞。

是否有一种方法可以确保当驱动程序在/dev/xyz上执行POLLIN时,在该描述符上阻塞的所有进程都被唤醒?(就像走在等待队列名单之类的)??

您可以尝试将wake_up(或wake_up_interruptible)替换为wake_up_all (wake_up_interruptible_all)。这会唤醒所有等待的进程。

相关内容

  • 没有找到相关文章

最新更新