sched: cleanup inc/dec_rt_tasks
authorGregory Haskins <ghaskins@novell.com>
Mon, 29 Dec 2008 14:39:49 +0000 (09:39 -0500)
committerGregory Haskins <ghaskins@novell.com>
Mon, 29 Dec 2008 14:39:49 +0000 (09:39 -0500)
Move some common definitions up to the function prologe to simplify the
body logic.

Signed-off-by: Gregory Haskins <ghaskins@novell.com>
kernel/sched_rt.c

index 1bbd99014011894766334eee96da13d6fbc4a8de..0a5277233452b79d473452040cce8804ba91e340 100644 (file)
@@ -550,30 +550,28 @@ static void update_curr_rt(struct rq *rq)
 static inline
 void inc_rt_tasks(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
 {
-       WARN_ON(!rt_prio(rt_se_prio(rt_se)));
-       rt_rq->rt_nr_running++;
-#if defined CONFIG_SMP || defined CONFIG_RT_GROUP_SCHED
-       if (rt_se_prio(rt_se) < rt_rq->highest_prio) {
+       int prio = rt_se_prio(rt_se);
 #ifdef CONFIG_SMP
-               struct rq *rq = rq_of_rt_rq(rt_rq);
+       struct rq *rq = rq_of_rt_rq(rt_rq);
 #endif
 
-               rt_rq->highest_prio = rt_se_prio(rt_se);
+       WARN_ON(!rt_prio(prio));
+       rt_rq->rt_nr_running++;
+#if defined CONFIG_SMP || defined CONFIG_RT_GROUP_SCHED
+       if (prio < rt_rq->highest_prio) {
+
+               rt_rq->highest_prio = prio;
 #ifdef CONFIG_SMP
                if (rq->online)
-                       cpupri_set(&rq->rd->cpupri, rq->cpu,
-                                  rt_se_prio(rt_se));
+                       cpupri_set(&rq->rd->cpupri, rq->cpu, prio);
 #endif
        }
 #endif
 #ifdef CONFIG_SMP
-       if (rt_se->nr_cpus_allowed > 1) {
-               struct rq *rq = rq_of_rt_rq(rt_rq);
-
+       if (rt_se->nr_cpus_allowed > 1)
                rq->rt.rt_nr_migratory++;
-       }
 
-       update_rt_migration(rq_of_rt_rq(rt_rq));
+       update_rt_migration(rq);
 #endif
 #ifdef CONFIG_RT_GROUP_SCHED
        if (rt_se_boosted(rt_se))
@@ -590,6 +588,7 @@ static inline
 void dec_rt_tasks(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
 {
 #ifdef CONFIG_SMP
+       struct rq *rq = rq_of_rt_rq(rt_rq);
        int highest_prio = rt_rq->highest_prio;
 #endif
 
@@ -611,20 +610,13 @@ void dec_rt_tasks(struct sched_rt_entity *rt_se, struct rt_rq *rt_rq)
                rt_rq->highest_prio = MAX_RT_PRIO;
 #endif
 #ifdef CONFIG_SMP
-       if (rt_se->nr_cpus_allowed > 1) {
-               struct rq *rq = rq_of_rt_rq(rt_rq);
+       if (rt_se->nr_cpus_allowed > 1)
                rq->rt.rt_nr_migratory--;
-       }
 
-       if (rt_rq->highest_prio != highest_prio) {
-               struct rq *rq = rq_of_rt_rq(rt_rq);
-
-               if (rq->online)
-                       cpupri_set(&rq->rd->cpupri, rq->cpu,
-                                  rt_rq->highest_prio);
-       }
+       if (rq->online && rt_rq->highest_prio != highest_prio)
+               cpupri_set(&rq->rd->cpupri, rq->cpu, rt_rq->highest_prio);
 
-       update_rt_migration(rq_of_rt_rq(rt_rq));
+       update_rt_migration(rq);
 #endif /* CONFIG_SMP */
 #ifdef CONFIG_RT_GROUP_SCHED
        if (rt_se_boosted(rt_se))