内核代码在按住螺旋锁时睡觉

时间:2014-10-17 08:25:35

标签: linux-kernel kernel linux-device-driver kernel-module

假设Linux驱动程序代码获取了一个自旋锁,在关键部分内部,函数调用会强制在驱动程序之上运行的进程进入休眠状态。知道要保持自旋锁在相关处理器上禁用抢占,是否可以唤醒进程,从而允许驱动程序代码释放自旋锁?

2 个答案:

答案 0 :(得分:1)

不,拿着螺旋锁时不允许睡觉。执行此操作的代码是错误的。

可以唤醒进程的唯一方法是,如果在另一个核心上运行的代码做了某些事情来唤醒它(这意味着是的,如果只有一个核心,它肯定会死锁)。

答案 1 :(得分:0)

虽然spinlock其他进程无法做任何事情来唤醒它,你可以尝试使用信号量进行这种类型的切换