Linux 如何发送一个";“信号”;从内核模块到用户空间应用程序?
我有一个包含中断处理程序的Linux内核模块,希望在中断处理完成后通知用户空间应用程序。请告诉我,怎么做?使用 Netlink套接字是一种用于传输信息的专用IPC 在内核和用户空间进程之间。它提供全双工 通过标准套接字API在两者之间建立通信链路 用户空间进程和用于内核模块的特殊内核API。 Netlink套接字使用地址族AF_Netlink,与 TCP/IP套接字使用的AF_INET。每个netlink套接字功能都定义其 内核头文件中自己的协议类型包括/linux/netlink.hLinux 如何发送一个";“信号”;从内核模块到用户空间应用程序?,linux,module,kernel,signals,interrupt,Linux,Module,Kernel,Signals,Interrupt,我有一个包含中断处理程序的Linux内核模块,希望在中断处理完成后通知用户空间应用程序。请告诉我,怎么做?使用 Netlink套接字是一种用于传输信息的专用IPC 在内核和用户空间进程之间。它提供全双工 通过标准套接字API在两者之间建立通信链路 用户空间进程和用于内核模块的特殊内核API。 Netlink套接字使用地址族AF_Netlink,与 TCP/IP套接字使用的AF_INET。每个netlink套接字功能都定义其 内核头文件中自己的协议类型包括/linux/netlink.h 您可以
- 您可以始终使用普通套接字,如UDP或UNIX
- 您可以通过
或/proc
导出此信息(请参见问题)/sys
- 您可以使用Netlink(参见问题)
- 我直接回答这个问题,因为这是谷歌“内核向用户空间发送信号”的最高结果
我通常使用signal终止用户空间进程,在调用ioctls时检查它的堆栈。通常,以下方法对我有效:
force_sig(SIGSEGV, current);
我们可以假设你说的是Linux吗?无论哪种方式,请在您的问题中添加相关标记。@OliCharlesworth是的,我们正在谈论Linux,但我的标记已用完。例如,您可以删除“硬件”而改为“Linux”。硬件知识对于回答这个问题并不重要。@chirlu好的,我已经做到了。请让我们返回问题标签对于让正确的人来查看您的问题非常重要。看见答案来了。:-)消息队列或共享内存?您也可以使用信号来访问用户空间:)。。您的内核模块只应该知道需要触发的进程的PID。我已经使用IOCTL向内核模块传递了PID:)。