Re: [問題] 新手spinlock使用時機?

看板LinuxDev作者 (bendog)時間9年前 (2015/08/08 23:45), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串2/2 (看更多)
會使用spinlock 表示有共享的資料可能會同時被讀寫,在kernel的話,要特別注意讀寫 的時機點的context, 比如irq, bottom-half, normal kernel context。舉個例子, 假 設當前程式處於normal kernel context 呼叫spinlock(a), 這時 interrupt出現,cpu 跑去執行interrupt。如果 ,所執行的interrupt handler剛好呼叫叫spinlock(a)。就de adlock了。因此,在normal kernel context,要呼叫spinlock +irq_disable.先讓cpu不 會跑去執行interrupt,才不會在critical section被interrupt 中斷。至於在irq_contex t,呼叫spinlock 就好。 kernel 有個API 是做spinlock +irq_disable不過我忘記名稱了。 -- Sent from my Android -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.255.237.5 ※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1439048746.A.535.html

08/09 01:53, , 1F
非常感謝你的分享~推推!
08/09 01:53, 1F

08/18 22:49, , 2F
spin_lock_irqsave?
08/18 22:49, 2F
文章代碼(AID): #1LnYGgKr (LinuxDev)
文章代碼(AID): #1LnYGgKr (LinuxDev)