aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/sched_psn_edf.c
diff options
context:
space:
mode:
Diffstat (limited to 'litmus/sched_psn_edf.c')
-rw-r--r--litmus/sched_psn_edf.c4
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;