内核模块(Linux)中编写的中断可以通知Qt中正在运行的程序吗?没有用户空间程序等待/轮询?

标签 c embedded-linux interrupt

是否有来自内核模块的中断可以通知在用户空间中运行的 Qt 嵌入式程序?不使用 ioctl 的“wait_event_interruptible()”?

我希望我的程序能够正常运行,而不必“等待”或进行轮询以检查中断是否发生。一旦中断发生,程序就会使用react

这个问题和我的相似How kernel notify a user space program an interrupt occurrs但他正在使用“wait_event_interruptible()”

谢谢

最佳答案

您也可以尝试使用 netlink (libnl)。在驱动程序中,您只需要单播消息的 pid 号。从应用程序中,您可以使用套接字的 recvmsg() 来等待事件发生。

  • [app]----{向驱动程序发送消息}---> [驱动程序](驱动程序现在知道 pid 并保存它)
  • [app]------{blocking recvmsg}--------> 等待事件发生
  • [app]<--------{带有负载的消息}--- [driver](将事件信息作为单播发送到 pid)

希望对你有帮助,

问候

关于内核模块(Linux)中编写的中断可以通知Qt中正在运行的程序吗?没有用户空间程序等待/轮询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13766494/

相关文章:

linux - 如何得知远程 Linux 机器是否已启动?

java - 停止线程或让它运行

rust - Rust中的中断是否可以使用全局可变数据?

linux - 如何在 AP 模式下获取机器(Linux 上)的 IP 地址?

linux - 我如何确定安装了哪个 MTD 闪存设备(例如获取 ID 或序列号)?

linux - 为什么我们需要创建一个中断向量表?

c - 由于 MPI_comm_size 导致的段错误

c - 如何从 scanf 中识别字段分隔符?

c++ - 将更改限制为最大金额

c - 在循环中使用 free() 从文件创建链接列表时出现问题