我正在查看 Linux 中的调度程序代码:
if (prev->state && !(preempt_count() & PREEMPT_ACTIVE)) {
if (unlikely(signal_pending_state(prev->state, prev))) {
prev->state = TASK_RUNNING;
} else {
deactivate_task(rq, prev, DEQUEUE_SLEEP);
prev->on_rq = 0;
据我了解,如果prev
任务不可中断,则此代码将停用提供的任务(并从运行队列中删除)
preempt_count() & PREEMPT_ACTIVE == 0
有人可以向我解释什么是什么,什么preempt_count
时候thread_info
会满足这个条件?