4

产生中断的设备由内核中的处理程序管理。我需要发送带有标志的消息,以便用户应用程序接收到发生中断的通知,从而可以执行程序。例如,唤醒一个进程。我该怎么做呢?

4

2 回答 2

2

恕我直言,POSIX 风格的解决方案是编写一个在内核中接收中断的设备驱动程序。用户空间程序将打开一个设备文件并从中获取 icoctl() 或 read(),直到至少一个事件到达为止。我建议,用户空间程序实际上应该多读一点:

  • 到目前为止有多少事件已经到来?)
  • 呼叫是否被阻塞(例如,从设备读取时没有排队的事件)

这将帮助您查看您的程序何时错误事件(例如,因为它已在前一个周期中延迟)。

于 2013-08-12T22:46:00.877 回答
2

我更喜欢使用 Netlink 作为内核和用户空间之间的 IPC。只需确保使用 GFP_ATOMIC(在 netlink_broadcast 中)分配消息,以确保您不会在 irq 中休眠。在这里查看 Netlink 教程。

于 2013-08-13T20:44:42.483 回答