【发布时间】:2012-05-30 12:27:13
【问题描述】:
在 Linux 设备驱动程序中。在引入自旋锁的时候,给出了下面的例子:
您的驱动程序正在执行并且刚刚取出一个控制 访问其设备。锁定时,设备会发出一个 中断,这会导致您的中断处理程序运行。中断 处理程序,在访问设备之前,还必须获得锁。 在中断处理程序中取出自旋锁是合法的 做;这是自旋锁操作不休眠的原因之一。 但是如果中断程序在同一时间执行会发生什么? 处理器作为最初取出锁的代码?虽然 中断处理程序正在旋转,非中断代码将无法 运行以释放锁。该处理器将永远旋转。
如何解决这个问题?使用信号量?请帮忙。
【问题讨论】:
标签: linux-device-driver spinlock