[RFC][PATCH RT 4/4] sched/rt: Initiate a pull when the priority of a task is lowered
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2012-12-08 00:09:53
Also in:
lkml
From: Steven Rostedt <rostedt@goodmis.org>
Date: 2012-12-08 00:09:53
Also in:
lkml
If a task lowers its priority (say by losing priority inheritance) if a higher priority task is waiting on another CPU, initiate a pull. Signed-off-by: Steven Rostedt <rostedt@goodmis.org> Index: linux-rt.git/kernel/sched/rt.c ===================================================================
--- linux-rt.git.orig/kernel/sched/rt.c
+++ linux-rt.git/kernel/sched/rt.c@@ -997,6 +997,8 @@ inc_rt_prio(struct rt_rq *rt_rq, int pri inc_rt_prio_smp(rt_rq, prio, prev_prio); } +static int pull_rt_task(struct rq *this_rq); + static void dec_rt_prio(struct rt_rq *rt_rq, int prio) {
@@ -1021,6 +1023,9 @@ dec_rt_prio(struct rt_rq *rt_rq, int pri rt_rq->highest_prio.curr = MAX_RT_PRIO; dec_rt_prio_smp(rt_rq, prio, prev_prio); + + if (prev_prio < rt_rq->highest_prio.curr) + pull_rt_task(rq_of_rt_rq(rt_rq)); } #else