取自:LDD3,Chapter5,自旋锁->自旋锁和原子上下文
我们的驱动程序正在执行,并且已经获得了一个自旋锁,这个锁控制着对设备的访问。在拥有这个锁的时候,设备产生了一个中断,它导致中断处理程序(routine)被调用。而中断处理程序在访问该设备前,也要获得这个锁。在中断处理程序中拥有锁是合法的,这也是自旋锁操作不能休眠的一个原因。但是,当中断处理程序在最初拥有锁的代码所在的处理器上运行时(这句话表述有点绕),会发生什么情况呢?在中断例程自旋时,非中断代码将没有任何机会来释放这个锁,处理器将永远自旋下去
所以结论是:为了避免这种陷阱,我们需要在拥有自旋锁时,禁止中断(仅在本地cpu上)