发生中断时,在进程运行时可以处理中断。调度程序将当前任务更改为另一个任务时,是否可以处理中断(我的意思是调度程序正在执行线程上下文切换)?
对于这个问题的任何提示,我将不胜感激。
不可能,在进行上下文切换之前,schedule()函数将禁用中断。
static void __sched notrace __schedule(bool preempt)
{
struct task_struct *prev, *next;
unsigned long *switch_count;
struct rq_flags rf;
struct rq *rq;
int cpu;
cpu = smp_processor_id();
rq = cpu_rq(cpu);
prev = rq->curr;
schedule_debug(prev);
if (sched_feat(HRTICK))
hrtick_clear(rq);
//look at here
local_irq_disable();
......
};
这里是source code,我写了a blog about that,也许对您有所帮助。