0

次の関数は、./kernel/sched/rt.c(v3.5.4) で定義されています。

static void enqueue_pushable_task(struct rq *rq, struct task_struct *p)
{
        plist_del(&p->pushable_tasks, &rq->rt.pushable_tasks);
        plist_node_init(&p->pushable_tasks, p->prio);
        plist_add(&p->pushable_tasks, &rq->rt.pushable_tasks);

        /* Update the highest prio pushable task */
        if (p->prio < rq->rt.highest_prio.next)
                rq->rt.highest_prio.next = p->prio;
}

私が理解できないのは、なぜ同じリストから同じノードを何度も追加および削除したいのかということです。最初にノードがリストから削除されplist_del、同じノードが関数によって同じリストに追加されplist_addます。これが行われる特定の理由

4

1 に答える 1

1

タスクの優先度が変更されると、優先度リスト内のその位置も変更される必要があります。

于 2012-10-19T12:37:47.567 に答える