gpt4 book ai didi

linux - 如何在 Linux 中中断用户空间应用程序

转载 作者:太空狗 更新时间:2023-10-29 11:18:50 25 4
gpt4 key购买 nike

我正在开发 Linux DMA 驱动程序。用户空间应用程序希望驱动程序执行异步操作(数据传输)并仅在操作完成时得到通知。用户空间应用程序如何异步获得通知?

我知道在内核空间中,可以安装中断处理程序来处理完成中断。我的问题是关于用户空间的,因为我的数据必须在用户空间中处理。我能想到的就是在用户空间创建一个线程,等待驱动完成任务。有更好的方法来处理这个吗?还是我想错了方向?

更一般地说,如何在用户空间处理 Linux 的中断?

最佳答案

通常的方法是为您的设备驱动程序实现一个poll 函数。此函数应将任务添加到一个或多个等待队列。然后,您的中断处理程序可以唤醒在队列中等待的任务。

当用户空间任务对与您的驱动程序关联的文件描述符调用pollselect 时,将调用您的驱动程序的poll 实现。所以从用户空间进程的角度来看,这就像等待其他任何东西(比如网络套接字)一样。事实上,这与磁盘或网络驱动程序用来唤醒等待 I/O 的进程的机制相同。

参见 http://www.xml.com/ldd/chapter/book/ch05.html#t3一个充实的例子。

关于linux - 如何在 Linux 中中断用户空间应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27317010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com