Linux kernel 当tasklet被硬件中断时会发生什么情况?

Linux kernel 当tasklet被硬件中断时会发生什么情况?,linux-kernel,synchronization,locking,spinlock,tasklet,Linux Kernel,Synchronization,Locking,Spinlock,Tasklet,我想知道这部分。 我们知道微线程无法睡眠,那么如果硬件中断出现,微线程会发生什么情况 我面临一个崩溃,其中tasklet被一个硬件中断中断。 我在tasklet中使用了spinlock 我应该使用spinlock\u irq\u save吗 请告诉我。是的,你说得对。微线程可以被硬件中断中断,您应该防止这种情况。通过使用spin\u lock\u irqsave()和族 提及 如果您不这样做,并且如果微线程被中断,那么您已经看到了发生的情况(崩溃)如果它清除了您的疑问,请接受答案您试图用“自旋锁

我想知道这部分。 我们知道微线程无法睡眠,那么如果硬件中断出现,微线程会发生什么情况

我面临一个崩溃,其中tasklet被一个硬件中断中断。 我在tasklet中使用了spinlock

我应该使用spinlock\u irq\u save吗


请告诉我。

是的,你说得对。微线程可以被硬件中断中断,您应该防止这种情况。通过使用
spin\u lock\u irqsave()
和族

提及


如果您不这样做,并且如果微线程被中断,那么您已经看到了发生的情况(崩溃)

如果它清除了您的疑问,请接受答案您试图用“自旋锁”保护什么?通常你可以构建一些东西,这样就不重要了。虽然
spinlock\u irq\u save
可能是一种解决方案,但它会增加整个系统的irq延迟。也就是说,这可能是一个坏主意,取决于上下文。如果您使用自旋锁irqsave,您可能会在不知不觉中增加中断延迟。根据tasklet的定义,它在“中断启用”上下文中运行。同一类型的两个tasklet不能同时运行,所以锁的用途是什么?我只在共享资源的情况下看到锁,但我无法回忆某个场景。你能举个例子吗?