diff options
| author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-02-12 16:40:43 -0500 |
|---|---|---|
| committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-04-12 21:39:15 -0400 |
| commit | fa08f1949dadd0cbc4dcf71eb11dede76a8ad2ad (patch) | |
| tree | 2eb3a9e2afe8866f1e829e5e3a5ee2fda29cd0bf | |
| parent | c05eaa8091d2cadc20363d44a85ee454262f4bc2 (diff) | |
bugfix: release master CPU must signal task was pickedwip-release-master-fix
Otherwise, the release master CPU may try to reschedule in an infinite
loop.
| -rw-r--r-- | litmus/sched_gsn_edf.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/litmus/sched_gsn_edf.c b/litmus/sched_gsn_edf.c index c5c9600c33d8..2a649beed791 100644 --- a/litmus/sched_gsn_edf.c +++ b/litmus/sched_gsn_edf.c | |||
| @@ -374,8 +374,10 @@ static struct task_struct* gsnedf_schedule(struct task_struct * prev) | |||
| 374 | /* Bail out early if we are the release master. | 374 | /* Bail out early if we are the release master. |
| 375 | * The release master never schedules any real-time tasks. | 375 | * The release master never schedules any real-time tasks. |
| 376 | */ | 376 | */ |
| 377 | if (gsnedf.release_master == entry->cpu) | 377 | if (gsnedf.release_master == entry->cpu) { |
| 378 | sched_state_task_picked(); | ||
| 378 | return NULL; | 379 | return NULL; |
| 380 | } | ||
| 379 | #endif | 381 | #endif |
| 380 | 382 | ||
| 381 | raw_spin_lock(&gsnedf_lock); | 383 | raw_spin_lock(&gsnedf_lock); |
