在Linux平臺的ARM內核實現中,將tasklet中的延遲工作添加到percpu vec | vec_hi列表中。爲什麼同一個TASKLET不能同時在兩個內核上執行?
- 現在從ISR執行返回時,它會去處理softirq和tasklets中的延遲工作。
- 現在這個延遲工作可以在IRQ啓用的中斷上下文中處理,或者有可以在進程上下文中處理它的ksoftirq線程。
- 相同的tasklet將在ksoftirq線程爲percpu的同一CPU上執行。
- 我已經看到很多書籍,例如LDD,Robert Love的書,聲稱同一個tasklet不能同時在兩個內核上執行?
怎麼樣?有人可以幫助我...如果是這樣,我錯過了什麼?
感謝回答,我明白這一點,但我的觀點是,我創建一個微進程並將其添加到hi_vec上我的ISR來了,現在它會通過一個percpu線程ksoftirq送達的CPU,所以肯定會執行現在如果對於其他某個CPU上的相同ISR,我們會使用該核心的HI_VEC列表來提交相同的任務小程序。然後,相同的任務小程序將在兩個核心上執行。在兩個每個cpu線程的上下文中,ksoftirq/x和ksoftirqx1,現在聲稱一個tasklet不能同時在兩個內核上執行。這種說法是錯誤的,你建議什麼? –
謝謝budy ,,我明白了..非常感謝.. –