当tasklet运行并触发硬件中断时,tasklet的状态会发生什么?

时间:2015-02-27 00:09:32

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

当tasklet执行并且在tasklet执行过程中触发硬件中断时,tasklet的状态会发生什么?

3 个答案:

答案 0 :(得分:3)

Tasklet是下半部分。它们在softirq上下文中运行,而不是在硬件中断上下文中运行。因此始终启用硬件中断。在执行tasklet时触发硬件中断时,它将中断tasklet。然后上半部分在相应的IRQ堆栈上运行并确认中断。这种行为对于中断处理程序尤其有用,其中必须尽快管理硬件中断,但大多数数据管理可以安全地延迟到以后的时间。实际上,就像内核计时器一样,在软中断的上下文中执行一个tasklet(在原子模式下),这是一种在启用硬件中断的情况下执行异步任务的内核机制。

答案 1 :(得分:0)

检查tasklet_schedule功能。

它将保存中断系统的状态并将中断恢复到之前的状态,并在do_softirq操作后返回。

答案 2 :(得分:-1)

Tasklets在中断上下文中运行。因此,tasklet中的代码不应该睡眠(或被中断)。如果tasklet被中断干扰,则系统崩溃。要防止在运行tasklet时出现中断,必须使用spinlock_irq_save()

来防止中断