当微线程正在执行,并且在微线程执行过程中触发硬件中断时,微线程的状态会发生什么变化?
发布于 2015-02-27 23:42:30
Tasklet是下半部分。它们在软中断上下文中运行,而不是在硬件中断上下文中运行。因此,硬件中断始终处于启用状态。当硬件中断在执行微线程时被触发时,它将中断微线程。然后,上半部分在相应的IRQ堆栈上运行,并确认中断。此行为对于中断处理程序特别有用,在中断处理程序中,必须尽快管理硬件中断,但大多数数据管理可以安全地延迟到以后的时间。实际上,微线程就像内核计时器一样,在软中断的上下文中执行(以原子模式),软中断是一种在启用硬件中断的情况下执行异步任务的内核机制。
发布于 2016-02-09 14:54:58
检查tasklet_schedule函数。
它将保存中断系统的状态,并将中断恢复到以前的状态,并在do_softirq操作后返回。
发布于 2015-02-27 16:20:09
微线程在中断上下文中运行。所以微线程中的代码不应该休眠(或被中断)。如果微线程被中断中断,你的系统就会崩溃。要在运行tasklet时防止中断,必须使用spinlock_irq_save()防止中断
https://stackoverflow.com/questions/28755255
复制相似问题