aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2007-10-08 01:22:23 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2007-10-08 01:22:23 -0400
commitb2c6eb04b91da2f09d6c33cf8cbd821f28cb0204 (patch)
tree983ccf37668b0e82b6ac646c62d7039cd2d2b86e /kernel
parenteab069b8498e0106e2556f10c4ecfed4928326ce (diff)
adaptive: check for pending weight changes on scheduler tick
Diffstat (limited to 'kernel')
-rw-r--r--kernel/sched_adaptive.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/kernel/sched_adaptive.c b/kernel/sched_adaptive.c
index 0eaba83758..e36d74ae2c 100644
--- a/kernel/sched_adaptive.c
+++ b/kernel/sched_adaptive.c
@@ -588,12 +588,18 @@ static reschedule_check_t adaptive_scheduler_tick(void)
588 588
589 589
590 /* only the first CPU needs to release jobs */ 590 /* only the first CPU needs to release jobs */
591 if (get_rt_mode() == MODE_RT_RUN && smp_processor_id() == 0) { 591 if (get_rt_mode() == MODE_RT_RUN) {
592 queue_lock_irqsave(&adaptive_lock, flags); 592 queue_lock_irqsave(&adaptive_lock, flags);
593 593
594 /* (1) run the optimizer if it did not trigger often enough */ 594 /* (1) run the optimizer if it did not trigger often enough */
595 if (time_before_eq(last_optimizer_run + optimizer_period, jiffies)) 595 if (time_before_eq(last_optimizer_run + optimizer_period, jiffies))
596 adaptive_optimize(); 596 adaptive_optimize();
597 else if (is_realtime(t) &&
598 get_cur_sl(t) != get_opt_sl(t) &&
599 time_before_eq(t->rt_param.opt_change, jiffies)) {
600 opt_time = jiffies;
601 enact_weight_change(t);
602 }
597 603
598 /* (2) try to release pending jobs */ 604 /* (2) try to release pending jobs */
599 adaptive_release_jobs(); 605 adaptive_release_jobs();