一般spin_lock的表示锁住自旋锁,那么在代码中经常看到了spin_lock_bh与spin_lock_irq或者spin_lock_irqsave是什么意思呢。
一般我们都了解spin_lock是什么意思,就是自旋呗,如果在开中断的情况下自旋,则可能被打断。如果在中断处理程序或者关闭中断的情况下运行,则不能被抢占,只有其它CPU中的运行代码才可以释放这个锁。
spin_lock_irq不仅同步进程,还能够在进程与中断之间进行同步,也就是获取自旋锁的时候,还要对本CPU关中断(当然关闭中断之后,softirq也不能运行了。spin_lock_irqsave原理上与spin_lock相同,只是能够恢复原先的中断开关的状态。
spin_lock_bh只关闭softirq,这样中断还是能够响应的,相对spin_lock_irq来说,条件就相对宽容一些。
那么问题来了:spin_lock住一个自旋锁的内核进程(如果它没有关中断的话),能够被其它内核进程抢占吗?
阅读(4849) | 评论(0) | 转发(0) |