【发布时间】:2020-10-17 05:01:03
【问题描述】:
发现内核中有一个叫task_running的函数,其判断逻辑如下
static inline int task_current(struct rq *rq, struct task_struct *p)
{
return rq->curr == p;
}
static inline int task_running(struct rq *rq, struct task_struct *p)
{
#ifdef CONFIG_SMP
return p->on_cpu;
#else
return task_current(rq, p);
#endif
}
rq->curr 和 p->on_cpu 有什么区别吗?我认为它们都意味着该进程正在由当前的 cpu 调度。为什么 SMP 需要单独的判断?
【问题讨论】:
标签: linux linux-kernel kernel