当tasklet执行并且在tasklet执行过程中触发硬件中断时,tasklet的状态会发生什么?
答案 0 :(得分:3)
Tasklet是下半部分。它们在softirq上下文中运行,而不是在硬件中断上下文中运行。因此始终启用硬件中断。在执行tasklet时触发硬件中断时,它将中断tasklet。然后上半部分在相应的IRQ堆栈上运行并确认中断。这种行为对于中断处理程序尤其有用,其中必须尽快管理硬件中断,但大多数数据管理可以安全地延迟到以后的时间。实际上,就像内核计时器一样,在软中断的上下文中执行一个tasklet(在原子模式下),这是一种在启用硬件中断的情况下执行异步任务的内核机制。
答案 1 :(得分:0)
检查tasklet_schedule
功能。
它将保存中断系统的状态并将中断恢复到之前的状态,并在do_softirq
操作后返回。
答案 2 :(得分:-1)
Tasklets在中断上下文中运行。因此,tasklet中的代码不应该睡眠(或被中断)。如果tasklet被中断干扰,则系统崩溃。要防止在运行tasklet时出现中断,必须使用spinlock_irq_save()