diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2011-02-12 16:40:43 -0500 |
---|---|---|
committer | Christopher Kenna <cjk@cs.unc.edu> | 2011-04-12 22:11:55 -0400 |
commit | 6d4cc883ec2470500be6c95fd2e7c6944e89c3e8 (patch) | |
tree | 85b589ef61a38ac8b87e1b2331e492002127ebac /litmus | |
parent | 0f6a8e02773f8c23b5b6a3dbfa044e50c9d7d811 (diff) |
bugfix: release master CPU must signal task was picked
Otherwise, the release master CPU may try to reschedule in an infinite
loop.
Diffstat (limited to 'litmus')
-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 08b8847ede97..3092797480f8 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); |