我可以設置工作隊列的優先級嗎?我可以設置工作隊列的優先級嗎?
我正在修改SPI內核模塊「spidev」,所以它可以更快地與我的硬件通信。 外部硬件是一個帶有非常小緩衝區的CAN控制器,所以我必須快速讀取任何傳入數據以避免丟失數據。 我配置了一個GPIO中斷來通知我新的數據,但我無法讀取中斷處理程序中的SPI硬件。 我的中斷處理程序基本上設置了一個讀取SPI數據的工作隊列。 當內核中只有一個活動進程時,它工作正常。 只要我同時打開任何其他進程(甚至進程查看器頂部),我就開始丟失數據,也就是說,我可能會收到1000包沒有問題的數據,然後連續丟失15個數據包上。 我懷疑我的問題的原因是,當其他進程(在本例中爲top)控制中斷處理程序運行的cpu時,但直到調度程序再次被調用時,workqueue中的工作纔會執行。 我試圖提高我的過程的優先順序,但沒有成功。
我想知道是否有辦法告訴內核在中斷處理函數後立即執行workqueue中的工作。 歡迎提出建議。
那麼,爲什麼你不能從ISR內部存儲輸入數據呢? – 2013-03-25 08:47:27
http://lkml.indiana.edu/hypermail/linux/kernel/0510.2/1027.html – cnicutar 2013-03-25 08:47:59
看起來你需要RT操作系統,checkout RT Linux。 – stdcall 2013-03-25 09:36:33