aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Kenna <cjk@cs.unc.edu>2012-10-19 05:17:08 -0400
committerChristopher Kenna <cjk@cs.unc.edu>2012-10-19 05:17:08 -0400
commit0faf8c218a8f27c7e10fbbf31c8ed2d7661567a4 (patch)
tree88f63edccbb5e66efdc57c64580bacd23245d022
parentfb97680364ea3c7aaa691a819e0668cafb9289ad (diff)
parent57a160794fb7b1033746fe0d84205d673ea01e6b (diff)
Merge remote-tracking branch 'litmus-rt/wip-mc' into pandaboard-litmus-mc
-rw-r--r--litmus/sched_mc.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/litmus/sched_mc.c b/litmus/sched_mc.c
index fb339c8d3e7..c8677f688f7 100644
--- a/litmus/sched_mc.c
+++ b/litmus/sched_mc.c
@@ -667,6 +667,7 @@ static void check_partitioned_preempt(struct domain *dom)
667 return; 667 return;
668 } 668 }
669 669
670 entry->signal.preempt = 1;
670 litmus_reschedule(entry->cpu); 671 litmus_reschedule(entry->cpu);
671} 672}
672 673
@@ -1263,8 +1264,16 @@ static void process_signals(struct cpu_entry *entry)
1263 /* A higher-priority task may exist */ 1264 /* A higher-priority task may exist */
1264 STRACE("Reading preempt signal\n"); 1265 STRACE("Reading preempt signal\n");
1265 1266
1266 check_partitioned_preempt(dom); 1267 if (mc_preempt_needed(ce->domain, ce->server.linked)) {
1267 raw_spin_unlock(dom->lock); 1268 preempt_crit(ce->domain, ce);
1269 raw_spin_unlock(dom->lock);
1270 if (!is_ghost(ce->server.linked)) {
1271 update_crit_levels(entry);
1272 raw_spin_lock(&entry->lock);
1273 }
1274 } else {
1275 raw_spin_unlock(dom->lock);
1276 }
1268 } 1277 }
1269 1278
1270 if (signal.update) { 1279 if (signal.update) {