在linux内核中,为什么在按住自旋锁的同时无法入睡?
示例:您的驱动程序正在执行,并且刚拿出一个锁来控制对其设备的访问。保持锁定状态时,设备会发出一个中断,这会使您的中断处理程序运行。在访问设备之前,中断处理程序还必须获得锁。在中断处理程序中取出自旋锁是一件合法的事。这是自旋锁操作无法hibernate的原因之一。但是,如果中断例程与最初取出锁的代码在同一处理器中执行,会发生什么情况?当中断处理程序旋转时,非中断代码将无法运行以释放锁定。该处理器将永远旋转。
资料来源:http : //www.makelinux.net/ldd3/chp-5-sect-5.shtml