aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2011-02-12 16:40:43 -0500
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2011-02-12 16:40:43 -0500
commit4df6011f5e571630cd99cd29b36bc8a701520540 (patch)
tree2dd96965c2d3ca645ba3ef8f4929ce4c08ba4c36
parent579a1c4dbfb27ec7e8030fd6fc20f342780f369c (diff)
bugfix: release master CPU must signal task was picked
-rw-r--r--litmus/sched_cedf.c4
-rw-r--r--litmus/sched_gsn_edf.c4
-rw-r--r--litmus/sched_pfair.c4
3 files changed, 9 insertions, 3 deletions
diff --git a/litmus/sched_cedf.c b/litmus/sched_cedf.c
index cb6a0bd0963c..1838c6b6fb0c 100644
--- a/litmus/sched_cedf.c
+++ b/litmus/sched_cedf.c
@@ -382,8 +382,10 @@ static struct task_struct* cedf_schedule(struct task_struct * prev)
382 /* Bail out early if we are the release master. 382 /* Bail out early if we are the release master.
383 * The release master never schedules any real-time tasks. 383 * The release master never schedules any real-time tasks.
384 */ 384 */
385 if (cluster->domain.release_master == entry->cpu) 385 if (cluster->domain.release_master == entry->cpu) {
386 sched_state_task_picked();
386 return NULL; 387 return NULL;
388 }
387#endif 389#endif
388 390
389 raw_spin_lock(&cluster->lock); 391 raw_spin_lock(&cluster->lock);
diff --git a/litmus/sched_gsn_edf.c b/litmus/sched_gsn_edf.c
index bd3b36223428..770004544edd 100644
--- a/litmus/sched_gsn_edf.c
+++ b/litmus/sched_gsn_edf.c
@@ -375,8 +375,10 @@ static struct task_struct* gsnedf_schedule(struct task_struct * prev)
375 /* Bail out early if we are the release master. 375 /* Bail out early if we are the release master.
376 * The release master never schedules any real-time tasks. 376 * The release master never schedules any real-time tasks.
377 */ 377 */
378 if (gsnedf.release_master == entry->cpu) 378 if (gsnedf.release_master == entry->cpu) {
379 sched_state_task_picked();
379 return NULL; 380 return NULL;
381 }
380#endif 382#endif
381 383
382 raw_spin_lock(&gsnedf_lock); 384 raw_spin_lock(&gsnedf_lock);
diff --git a/litmus/sched_pfair.c b/litmus/sched_pfair.c
index e3db82a2bdf8..c95bde87b5d7 100644
--- a/litmus/sched_pfair.c
+++ b/litmus/sched_pfair.c
@@ -607,8 +607,10 @@ static struct task_struct* pfair_schedule(struct task_struct * prev)
607 /* Bail out early if we are the release master. 607 /* Bail out early if we are the release master.
608 * The release master never schedules any real-time tasks. 608 * The release master never schedules any real-time tasks.
609 */ 609 */
610 if (unlikely(cluster->pfair.release_master == cpu_id(state))) 610 if (unlikely(cluster->pfair.release_master == cpu_id(state))) {
611 sched_state_task_picked();
611 return NULL; 612 return NULL;
613 }
612#endif 614#endif
613 615
614 raw_spin_lock(cpu_lock(state)); 616 raw_spin_lock(cpu_lock(state));