作者bendog (bendog)
看板LinuxDev
标题Re: [问题] 新手spinlock使用时机?
时间Sat Aug 8 23:45:43 2015
会使用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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1439048746.A.535.html
1F:推 soga0806: 非常感谢你的分享~推推! 08/09 01:53
2F:推 aweilin: spin_lock_irqsave? 08/18 22:49