2013-08-31 169 views
1

想象一下,设备功能持有自旋锁来控制对设备的访问。在锁定期间,器件发出中断,这会导致中断处理程序运行。在访问设备之前,中断处理程序还必须获取该锁。避免螺旋锁死锁

假设中断处理程序与最初取出锁的代码在相同的处理器中执行。

知道为了保持螺旋锁禁用相关处理器的抢占,是否有可能在另一个处理器上执行保持螺旋锁的代码(因为在该处理器上抢占)? (我们假设这是一个SMP机器)

回答

0
是否有可能在另一个处理器上执行保持自旋锁的代码(因为在此处理器上抢占)?

不,代码只是在等待中断处理程序返回。

只要使用spin_lock_irq*()spin_lock_bh()如果您还想防范softirqs/tasklets。