我們有一個ISR可以在任何可用的內核上執行,並且可能根據內核是忙還是空閒而導致成功或失敗條件。在處理程序中,我們使用queue_work_on()函數對每個核心的工作隊列進行排隊。對於每個核心,queue_work_on()函數將被調用,並且基於queue_work_on()的返回值,我們如何通過ISR返回值IRQ_HANDLED,IRQ_NONE由於多核系統中的調度程序超時導致進程掛起
如何處理queue_work_on函數中的任何一個失敗以及如何返回ISR值。
希望我提供了足夠的上下文來獲得一些觀點。
編輯:
情景更像是: 我們有例如由多個進程消耗的1024個隊列用於由主機驅動程序執行一些卸載功能。在提交卸載後,進程會被wait_for_completion()調用阻塞,理想情況下應該通過完成通知來喚醒進程。在驅動程序卸載的環中排隊並基於卸載成功,isr會通知工作線程使隊列作業出列並觸發完成事件。 現在我們看到更多的完成事件,而不是等待進程導致掛起TASK_UNITERRUPTIBLE狀態的進程導致計劃程序超時。需要一些指針來在多核系統中部署可能的同步
感謝您的回覆。我嘗試了這個建議,但沒有什麼區別:( 方案更像是:我們有1024個隊列,這些隊列被多個進程用於執行主驅動程序的卸載功能 – 2014-12-02 15:42:44
感謝您的迴應,我嘗試了這個建議,但沒有任何區別: ( 請參閱編輯後的查詢,詳細瞭解場景和相關問題。 希望能夠幫助您提供更多相關指示,以進一步探索。 – 2014-12-02 15:54:36