如何从内核模块向用户空间应用程序发送“信号”?

时间:2013-06-02 20:50:03

标签: linux module kernel signals interrupt

我有一个包含中断处理程序的Linux内核模块,并希望在处理完中断后以某种方式通知用户空间应用程序。请告诉我,怎么做?

3 个答案:

答案 0 :(得分:3)

使用netlink

  

Netlink socket是一种用于传输信息的特殊IPC   内核和用户空间进程之间。它提供全双工   通过标准套接字API为两者之间的通信链接   用户空间进程和内核模块的特殊内核API。   与之相比,Netlink套接字使用地址族AF_NETLINK   AF_INET由TCP / IP套接字使用。每个netlink套接字功能都定义了它   内核头文件中包含/ linux / netlink.h。

答案 1 :(得分:3)

  • 您始终可以使用普通套接字,例如UDP或UNIX。
  • 您可以通过/proc/sys导出此信息(请参阅this问题)。
  • 您可以使用Netlink(请参阅this问题)。

答案 2 :(得分:0)

我正在直接回答这个问题,因为它是谷歌“内核向用户空间发送信号”的最佳结果。

我通常使用signal来杀死用户空间进程,以便在调用ioctl时检查它的堆栈。通常以下内容适用于我:

force_sig(SIGSEGV, current);