2010-01-07 73 views
1

我可能會接近這一切錯誤,但...我可以在內核中設置Linux SIGUSR1嗎?

我有一個linux內核設備驅動程序處理外部中斷,並且當它發生時執行printk()。

我想要做的是告訴用戶空間的應用程序,這個事件已經發生,所以它可以喚醒並做一些事情。

是否有可能(/簡單/好的做法),從內核中設置SIGUSR1,然後通過

signal (SIGUSR1, <handler function>); 

由於從用戶空間捕捉它

回答

3

這聽起來不像一個非常好主意。如果可能的話,你必須以某種方式給驅動程序提供用戶空間人員的進程ID,以便驅動程序能夠發出信號。

我會創建一個/ dev/xxx,將其打開,並且驅動程序可以在事件發生時使文件描述符處於活動狀態。甚至可能提供更多信息。

+0

是的,這是很好的建議。讓您的設備註冊一個字符設備;用戶空間程序然後以'read'或'select'打開相應的設備節點和塊;設備驅動程序會在發生中斷時產生一條消息(甚至可能只是一個字節),並喚醒用戶空間應用程序。 – caf 2010-01-11 03:26:35

相關問題