调度程序将当前任务更改为另一个任务时(我的意思是调度程序正在执行线程上下文切换)时,是否可以处理中断?

问题描述 投票:0回答:1

发生中断时,在进程运行时可以处理中断。调度程序将当前任务更改为另一个任务时,是否可以处理中断(我的意思是调度程序正在执行线程上下文切换)?

对于这个问题的任何提示,我将不胜感激。

linux-kernel kernel scheduled-tasks scheduler scheduling
1个回答
1
投票

不可能,在进行上下文切换之前,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,也许对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.