aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched
diff options
context:
space:
mode:
authorBjoern Brandenburg <bbb@mpi-sws.org>2015-08-09 07:18:49 -0400
committerBjoern Brandenburg <bbb@mpi-sws.org>2017-05-26 17:12:28 -0400
commitf77cd98179f8758cb9b3bbb0bccbf576a6a79cb9 (patch)
treea312ce3b9e311e02ae8efe09e58548b9d0124c4e /kernel/sched
parent3baa55c19ffb567aa48568fa69dd17ad6f70d31d (diff)
Integrate preemption state machine with Linux scheduler
Track when a processor is going to schedule "soon".
Diffstat (limited to 'kernel/sched')
-rw-r--r--kernel/sched/core.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 32bffe174d75..f2f3a3000a1c 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -2857,6 +2857,10 @@ asmlinkage __visible void schedule_tail(struct task_struct *prev)
2857 */ 2857 */
2858 2858
2859 rq = finish_task_switch(prev); 2859 rq = finish_task_switch(prev);
2860
2861 if (unlikely(sched_state_validate_switch()))
2862 litmus_reschedule_local();
2863
2860 balance_callback(rq); 2864 balance_callback(rq);
2861 preempt_enable(); 2865 preempt_enable();
2862 2866
@@ -3349,6 +3353,8 @@ static void __sched notrace __schedule(bool preempt)
3349 3353
3350 TS_SCHED_START; 3354 TS_SCHED_START;
3351 3355
3356 sched_state_entered_schedule();
3357
3352 cpu = smp_processor_id(); 3358 cpu = smp_processor_id();
3353 rq = cpu_rq(cpu); 3359 rq = cpu_rq(cpu);
3354 prev = rq->curr; 3360 prev = rq->curr;
@@ -3421,6 +3427,10 @@ static void __sched notrace __schedule(bool preempt)
3421 } 3427 }
3422 3428
3423 TS_SCHED2_START(prev); 3429 TS_SCHED2_START(prev);
3430
3431 if (unlikely(sched_state_validate_switch()))
3432 litmus_reschedule_local();
3433
3424 balance_callback(rq); 3434 balance_callback(rq);
3425 TS_SCHED2_END(prev); 3435 TS_SCHED2_END(prev);
3426} 3436}