楼主:
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不过我忘记名称了。