Linux kernel 旋转锁定和旋转锁定的区别是什么

Linux kernel 旋转锁定和旋转锁定的区别是什么,linux-kernel,spinlock,Linux Kernel,Spinlock,我想了解自旋锁和自旋锁的区别。 根据 如果关键部分位于softirq和用户空间进程之间 我们应该使用旋转锁。 如果在两个软件之间 我们应该使用spin_lock。spin_lock_bh防止在持有锁时,softirq与调用方在同一CPU上运行。由于用户空间进程可以被softirq抢占,因此,如果softirq等待已被同一CPU锁定的自旋锁,则可防止死锁发生。请您使用代码引用解释如何使用自旋锁在该内核上禁用softirq。它增加了“softirq”计数,这是“抢占”的一部分对当前CPU进行计数,以

我想了解自旋锁和自旋锁的区别。

根据
如果关键部分位于softirq和用户空间进程之间
我们应该使用旋转锁。
如果在两个软件之间

我们应该使用spin_lock。

spin_lock_bh
防止在持有锁时,softirq与调用方在同一CPU上运行。由于用户空间进程可以被softirq抢占,因此,如果softirq等待已被同一CPU锁定的自旋锁,则可防止死锁发生。请您使用代码引用解释如何使用自旋锁在该内核上禁用softirq。它增加了“softirq”计数,这是“抢占”的一部分对当前CPU进行计数,以使该任务不能被其他任务抢占,并使_interrupt()(在“include/linux/preempt.h”中定义)中的
为真。在CPU提供任何硬件中断服务后,由
irq_exit()
(在“kernel/softirq.c”中)调用的通常挂起的softirq处理被抑制,因为
in_interrupt()
为true.Ok。Thank got it
spin\u lock\u bh
防止在锁定期间softirq与调用者在同一CPU上运行。由于用户空间进程可以被softirq抢占,因此,如果softirq等待已被同一CPU锁定的自旋锁,则可防止死锁发生。请您使用代码引用解释如何使用自旋锁在该内核上禁用softirq。它增加了“softirq”计数,这是“抢占”的一部分对当前CPU进行计数,以使该任务不能被其他任务抢占,并使_interrupt()
(在“include/linux/preempt.h”中定义)中的
为真。在CPU提供任何硬件中断服务后,由
irq_exit()
(在“kernel/softirq.c”中)调用的通常挂起的softirq处理被抑制,因为
in_interrupt()
为true.Ok。谢谢,明白了