簡體   English   中英

如何將數據從中斷處理程序傳輸到用戶應用程序?

[英]How to transmit data from an interrupt handler to an user application?

產生中斷的設備由內核中的處理程序管理。 我需要發送帶有標志的消息,以便用戶應用程序接收已發生中斷的通知,從而可以執行過程。 例如,喚醒進程。 我該怎么做呢?

恕我直言,POSIX風格的解決方案是編寫一個接收內核中斷的設備驅動程序。 用戶空間程序將打開一個設備文件和icoctl()或read(),阻塞直到至少一個事件到達。 我建議,用戶空間程序應該實際讀取更多:

  • 到目前為止已經有多少事件到了?)
  • 呼叫是否被阻止(例如,從設備讀取時沒有排隊的事件)

這可以幫助您,查看您的程序何時發生錯誤事件(例如,因為它在上一個周期中已被刪除)。

我更喜歡使用Netlink作為內核和用戶空間之間的IPC。 只需確保使用GFP_ATOMIC(在netlink_broadcast中)分配消息,以確保您不在irq中睡覺。 看看這里為網絡鏈路教程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM