假设设备函数持有自旋锁以控制对设备的访问。当锁被持有时,设备发出一个中断,这将导致中断处理程序的运行。在访问设备之前,中断处理程序还必须获得锁。
假设中断处理程序与最初取出锁的代码在同一个处理器中执行。
知道保持自旋锁无法在相关处理器上抢占,是否有可能在另一个处理器上执行持有自旋锁的代码(因为该处理器的抢占性)?(我们假设这是一台SMP机器)
发布于 2013-08-31 14:47:43
是否有可能在另一个处理器上执行保存自旋锁的代码(因为该处理器的抢占性)?
不,代码一直在等待中断处理程序的返回。
只要使用spin_lock_irq*(),或者spin_lock_bh(),如果您也想保护不受软线程/微线程的影响。
https://stackoverflow.com/questions/18549018
复制相似问题