Messages in this thread | | | From | Namhyung Kim <> | Subject | Re: [Question] sched/rt_mutex: re-enqueue_task on rt_mutex_setprio() | Date | Mon, 09 Jul 2012 09:50:19 +0900 |
| |
On Sat, 07 Jul 2012 21:29:19 -0400, Steven Rostedt wrote: > On Sat, 2012-07-07 at 14:44 +0900, Namhyung Kim wrote: >> Hi, >> >> I have a question on the code below: >> >> void rt_mutex_setprio(struct task_struct *p, int prio) >> { >> ... >> if (on_rq) >> enqueue_task(rq, p, oldprio < prio ? ENQUEUE_HEAD : 0); >> >> When enqueueing @p with new @prio, it seems put @p at the head of a >> rq if appropriate. I guess it's the case of boosting @p with higher >> priority, right? > > Actually, no. We put @p at the head of the queue when unboosting. If a > task is going from a high priority into a lower priority, it is still > treated as "important" for that priority, and is put to the front of the > queue (it was just higher than everything else on that queue). But if we > are boosting a task from a low priority, why put it to the head of other > tasks of its new priority, when those tasks were just higher than this > task, and this task is now just an "equal".
Thanks for the explanation. (Isn't it worth getting commented?) :)
Thanks, Namhyung
| |