aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorBjoern Brandenburg <bbb@mpi-sws.org>2015-08-09 07:18:50 -0400
committerBjoern Brandenburg <bbb@mpi-sws.org>2017-05-26 17:12:29 -0400
commitbaac487bf96b27e70c0b76ab2456bf1d981f6edd (patch)
treed85b5a14e65daef0d8578027936d637524c532a2 /kernel
parentf77cd98179f8758cb9b3bbb0bccbf576a6a79cb9 (diff)
Call sched_state_task_picked() from pick_next_task_stop()
Otherwise, the scheduler state machine becomes confused (and goes into a rescheduling loop) when stop-machine is triggered.
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched/stop_task.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/kernel/sched/stop_task.c b/kernel/sched/stop_task.c
index 604297a08b3a..3191f86ec0f0 100644
--- a/kernel/sched/stop_task.c
+++ b/kernel/sched/stop_task.c
@@ -1,5 +1,7 @@
1#include "sched.h" 1#include "sched.h"
2 2
3#include <litmus/preempt.h>
4
3/* 5/*
4 * stop-task scheduling class. 6 * stop-task scheduling class.
5 * 7 *
@@ -35,6 +37,13 @@ pick_next_task_stop(struct rq *rq, struct task_struct *prev, struct pin_cookie c
35 37
36 stop->se.exec_start = rq_clock_task(rq); 38 stop->se.exec_start = rq_clock_task(rq);
37 39
40 /* Let the LITMUS^RT scheduler state machine know
41 * that a task was picked. This is needed because the
42 * LITMUS^RT scheduling plugin will not be called
43 * if the stop-task class picks a task.
44 */
45 sched_state_task_picked();
46
38 return stop; 47 return stop;
39} 48}
40 49