小编Joe*_*eys的帖子

“__schedule”函数中的“current”和“prev”有什么区别,为什么不直接使用current?

从内核源代码来看:

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;  // <=================(1)
        .....
Run Code Online (Sandbox Code Playgroud)

上面第 (1) 行中的current和之间有什么区别?prev

在该行之后添加printk()

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;
        //if(prev->pid != current->pid)
        printk("the prev->pid …
Run Code Online (Sandbox Code Playgroud)

c scheduler scheduled-tasks linux-kernel

2
推荐指数
1
解决办法
207
查看次数

标签 统计

c ×1

linux-kernel ×1

scheduled-tasks ×1

scheduler ×1