想象一下,设备功能持有自旋锁来控制对设备的访问。在保持锁定的同时,设备发出中断,从而导致中断处理程序运行。在访问设备之前,中断处理程序还必须获得锁定。
假设中断处理程序在与最初取出锁的代码相同的处理器中执行。
知道要保持自旋锁禁用相关处理器上的抢占,是否可能在另一个处理器上执行保存自旋锁的代码(因为此处理器上的抢占)? (我们假设这是一台SMP机器)
答案 0 :(得分:0)
保存自旋锁的代码是否可能在另一个处理器上执行(因为该处理器上的抢占)?
不,代码只是等待中断处理程序返回。
如果您还希望防范softirqs / tasklet,请使用spin_lock_irq*()
或spin_lock_bh()
。