我有一个 PCIe 设备,它会在数据缓冲区准备好读取时发送硬件中断。我相信最好的方法是使用信号,但我不完全确定如何。我认为我需要做的是:
- 保存用户空间应用程序的 PID,以便驱动程序知道将信号发送到哪里
- 在 PCIe 设备驱动程序的中断处理程序中,向用户空间应用程序发送信号
- 在用户空间应用程序中实现一个信号处理函数来处理信号
我不知道该怎么做。如何/在哪里保存用户空间应用程序的 PID?如何从驱动程序的中断处理程序向该特定 PID 发送信号(我相信我应该使用 kill 命令,但我对获取 PID 的语法更感兴趣)?如何让用户空间应用程序在保存其 PID 后等待信号?是否可以让用户空间应用程序在保存其 PID 后继续运行,在收到信号时运行信号处理函数,并在信号到达之前继续运行?(类似于 ISR 的工作方式)