while (task_running(rq, p)) {//task_running(rq, p) = true, 说明p正在其它CPU上运行,p.on_cpu = 1(注意此时p.state不一定是running状态, task_switch过程会有这种情况) if (match_state && unlikely(p->state != match_state)) return 0; //这里说明p正在其它cpu上运行,且不是处于task_swith状...
wait_task_inactive() 方法旨在等待线程解除调度,即任务.on_rq 值为 0。如果 match_state 非零,表示检查的任务状态值,不期望改变。若状态改变,即任务可能已唤醒,则返回零。成功等待任务从 CPU 解除调度(p 不在rq中排队),返回其总切换计数值。如果第二次调用后返回相同的计数值,调用者可以确...