Linux 如果在获取互斥锁之后发生中断,并且中断处理程序也具有具有相同资源的互斥锁,会发生什么情况?

Linux 如果在获取互斥锁之后发生中断,并且中断处理程序也具有具有相同资源的互斥锁,会发生什么情况?,linux,linux-kernel,operating-system,linux-device-driver,Linux,Linux Kernel,Operating System,Linux Device Driver,我是Linux设备驱动程序编程新手,请帮助我 我在做一些小实验,然后我得到了奇怪的结果。 出于某些原因,我在中断处理程序中保留了互斥锁(系统)。在另一个函数(让我们调用func1)中,我保持了互斥锁(系统)。执行func1时,在发生互斥解锁(系统)中断之前。所以理论上应该出现死锁。但这并没有发生 我想知道它到底是如何工作的?这回答了你的问题吗?互斥不能在IRQ上下文中使用。IRQ线程化时的例外情况(通常在RT环境中),在这种情况下,它的行为类似于普通锁,即先取先用。@stark,感谢您的响应,不

我是Linux设备驱动程序编程新手,请帮助我

我在做一些小实验,然后我得到了奇怪的结果。 出于某些原因,我在中断处理程序中保留了互斥锁(系统)。在另一个函数(让我们调用func1)中,我保持了互斥锁(系统)。执行func1时,在发生互斥解锁(系统)中断之前。所以理论上应该出现死锁。但这并没有发生


我想知道它到底是如何工作的?

这回答了你的问题吗?互斥不能在IRQ上下文中使用。IRQ线程化时的例外情况(通常在RT环境中),在这种情况下,它的行为类似于普通锁,即先取先用。@stark,感谢您的响应,不,它没有,我的问题是“在互斥锁(系统)之后和互斥锁解锁(系统)之前执行func1时何时发生中断”,中断处理程序将被调用。但是我的中断处理程序也有互斥锁(系统)。所以理论上应该会发生死锁。但在我的情况下它不会发生。你知道为什么死锁不会发生吗?“@0andriy,感谢你的回复,我正在做一些实验(只是为了了解行为)。我在中断处理函数中使用了锁,所以应该出现死锁,但它不会发生。为什么?我相信互斥锁调用抢占禁用