diff options
author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2007-10-08 01:22:23 -0400 |
---|---|---|
committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2007-10-08 01:22:23 -0400 |
commit | b2c6eb04b91da2f09d6c33cf8cbd821f28cb0204 (patch) | |
tree | 983ccf37668b0e82b6ac646c62d7039cd2d2b86e /kernel | |
parent | eab069b8498e0106e2556f10c4ecfed4928326ce (diff) |
adaptive: check for pending weight changes on scheduler tick
Diffstat (limited to 'kernel')
-rw-r--r-- | kernel/sched_adaptive.c | 8 |
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(); |