避免螺旋锁死锁

时间:2013-08-31 14:08:01

标签: linux-kernel linux-device-driver

想象一下,设备功能持有自旋锁来控制对设备的访问。在保持锁定的同时,设备发出中断,从而导致中断处理程序运行。在访问设备之前,中断处理程序还必须获得锁定。

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

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

1 个答案:

答案 0 :(得分:0)

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

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

如果您还希望防范softirqs / tasklet,请使用spin_lock_irq*()spin_lock_bh()