2013-06-02 63 views
3

我有一個Linux內核模塊,其中包含中斷處理程序,並希望在中斷處理後以某種方式通知用戶空間應用程序。請告訴我,怎麼做?如何將「信號」從內核模塊發送到用戶空間應用程序?

+1

我們可以假設您正在談論Linux嗎?無論哪種方式,請將相關標籤添加到您的問題。 –

+0

@OliCharlesworth是的,我們正在談論Linux,但是我用完了標籤 –

+1

您可以(例如)移除「硬件」來支持「linux」。硬件知識對於回答這個問題並不重要。 – chirlu

回答

3
  • 您可以隨時使用普通套接字,如UDP或UNIX。
  • 您可以通過/proc/sys(請參閱this問題)導出此信息。
  • 您可以使用Netlink(請參閱this問題)。
+0

非常感謝:) –

+1

你可以使用IPC信號燈? – eduardosufan

+1

消息隊列或共享內存? – eduardosufan

3

使用netlink

Netlink套接字是一種特殊的IPC,用於在內核和用戶空間進程之間傳輸信息 。它通過用於 用戶空間進程的標準套接字API和用於內核模塊的特殊內核API在兩者之間提供全雙工 通信鏈接。 Netlink套接字使用地址族AF_NETLINK,而TCP/IP套接字使用的是 AF_INET。每個netlink套接字功能在內核頭文件include/linux/netlink.h中定義其自己的協議類型 。

0

我直接回答這個問題,因爲它是谷歌「內核發送信號到用戶空間」的最高結果。

我通常使用信號殺死用戶空間進程來檢查它的堆棧,因爲它調用ioctls。通常以下適用於我:

force_sig(SIGSEGV, current); 
相關問題