diff options
Diffstat (limited to 'litmus/sched_psn_edf.c')
-rw-r--r-- | litmus/sched_psn_edf.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/litmus/sched_psn_edf.c b/litmus/sched_psn_edf.c index aa567f2b91b..b89823d5c02 100644 --- a/litmus/sched_psn_edf.c +++ b/litmus/sched_psn_edf.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include <litmus/litmus.h> | 17 | #include <litmus/litmus.h> |
18 | #include <litmus/jobs.h> | 18 | #include <litmus/jobs.h> |
19 | #include <litmus/preempt.h> | ||
19 | #include <litmus/sched_plugin.h> | 20 | #include <litmus/sched_plugin.h> |
20 | #include <litmus/edf_common.h> | 21 | #include <litmus/edf_common.h> |
21 | #include <litmus/sched_trace.h> | 22 | #include <litmus/sched_trace.h> |
@@ -108,7 +109,7 @@ static void psnedf_tick(struct task_struct *t) | |||
108 | 109 | ||
109 | if (is_realtime(t) && budget_enforced(t) && budget_exhausted(t)) { | 110 | if (is_realtime(t) && budget_enforced(t) && budget_exhausted(t)) { |
110 | if (!is_np(t)) { | 111 | if (!is_np(t)) { |
111 | set_tsk_need_resched(t); | 112 | litmus_reschedule_local(); |
112 | TRACE("psnedf_scheduler_tick: " | 113 | TRACE("psnedf_scheduler_tick: " |
113 | "%d is preemptable " | 114 | "%d is preemptable " |
114 | " => FORCE_RESCHED\n", t->pid); | 115 | " => FORCE_RESCHED\n", t->pid); |
@@ -204,6 +205,7 @@ static struct task_struct* psnedf_schedule(struct task_struct * prev) | |||
204 | } | 205 | } |
205 | 206 | ||
206 | pedf->scheduled = next; | 207 | pedf->scheduled = next; |
208 | sched_state_task_picked(); | ||
207 | raw_spin_unlock(&pedf->slock); | 209 | raw_spin_unlock(&pedf->slock); |
208 | 210 | ||
209 | return next; | 211 | return next; |