2012-10-10 25 views
1

硬中斷處理時間我是從使用物理硬件設備將某些軟件,總共軟件仿真,而現在我期待在中斷處理部分。軟與在Linux中

當此代碼驅動物理硬件時,它通過request_irq()請求IRQ,現在我不再有物理設備了,我將要更改代碼以使用「softirq」方法。

一個關於點,我看到軟中斷實際上只是要等到它是由調度器調用事件;而硬件中斷導致運行活動立即中斷。這對我意味着,通過將我的代碼轉換爲使用softirqs會導致在原始代碼中不存在的調度延遲。

我的理解是否正確?
有沒有反正我可以註冊我的softirq立即中斷像一個硬件irq會?
如果沒有反正選擇一個免費的硬件irq號碼,並繼續使用request_irq()和「欺騙」它認爲我正在運行一個硬件設備?

+1

有幾乎總是從真正的硬件轉移到軟件模擬時的時間性差異 - 這一點適用或不中斷交付時間差異。 – mah

+0

@mah - true,但目標是儘可能多地刪除它。在這種情況下,我希望**其他軟件實體受到影響(中斷)。如果不是每次說的時間,我希望他們在處理IRQ時被迫停止。 – Mike

+0

@Mike:請在新場景中添加更多關於觸發中斷的信息,以及您的軟件在做什麼。如果你要從userland觸發它們,也許你不應該使用softirqs,但切換到更適合設備的API。 –

回答

1

否則可能會導致異常無論是在用戶模式代碼或內核模式的代碼(通過一個額外的系統調用或驅動程序),並在內核中有一個專門的異常處理這個異常轉換成模擬中斷。異常通常是立即處理的,至少由CPU處理,類似於外部硬件中斷。我對Linux內部知識不夠了解,告訴你如何完成這個任務,但它必須是可行的。我敢肯定,它可以在x86上運行。

+0

這實際上是一個好主意,我應該能夠做到這一點,只是不認爲它是一種選擇。謝謝! – Mike

0

我不是在實時計算領域完全有信心,但是這聽起來像它的一個很好的使用情況。實時計算確保您的代碼在有保證的時間範圍內執行。有一個Linux實時內核可用,可悲的是缺乏資金。如果你仍然需要保證你的softirq執行你應該看看它。我知道這是一個很好的問題,但也許對其他人也有用。