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

作者: bendog (bendog)   2015-08-08 23:45:43
會使用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不過我忘記名稱了。
作者: soga0806 (巴歐薩給路嘎)   2015-08-09 01:53:00
非常感謝你的分享~推推!
作者: aweilin   2015-08-18 22:49:00
spin_lock_irqsave?

Links booklink

Contact Us: admin [ a t ] ucptt.com