2010-09-29 32 views
0

我是一個linux設備驅動程序員。沒有得到應用程序的cntl

接下來我寫驅動程序的嗅探器硬件。

這個嗅探器硬件將連續從總線讀取數據。

我在我的驅動程序中有一箇中斷處理程序來通知接收到的數據。

我用dma地址映射來存儲數據。

h/w使用pyhsical地址,驅動程序使用虛擬地址。

我的問題,總是中斷處理程序接收到的數據中斷到接收器的數據。

我的應用程序無法獲取cntl從驅動程序獲取數據。

中斷處理程序不會將cntl提供給應用程序端。 Bcoz連續不停地中斷。

我該怎麼辦?請幫幫我。

感謝 孫大信

回答

0

聽起來像是你需要弄清楚如何加快你的中斷處理程序。

0

NAPI使用類似方法 - 當你得到通知您對現有數據的中斷,您:

  1. 禁止接收中斷。
  2. 開始/喚醒內核線程/工作隊列以開始從設備收集數據。繼續這樣做,直到你已經收集了環形緩衝區中的所有數據。確保讓應用程序不時運行(例如,每1000個數據包休眠X毫秒)。
  3. 只有當您完成收集所有傳入數據後,才能停止/放入內核線程/工作隊列並重新啓用接收中斷。
相關問題