0
以下功能在./kernel/sched/rt.c(v3.5.4定義):enqueue_pushable_task功能內核
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
函數將同一個節點添加到同一列表中。任何特定的原因爲什麼這樣做