diff options
author | Mike Galbraith <efault@gmx.de> | 2007-10-15 11:00:14 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2007-10-15 11:00:14 -0400 |
commit | 95938a35c5562afa7af7252821e44132391a3db8 (patch) | |
tree | 548cda134d007105f3a819a438ab384ab9f04e27 /kernel/sched.c | |
parent | ce6c131131df442f0d49d064129ecc52d9fe8ca9 (diff) |
sched: prevent wakeup over-scheduling
Prevent wakeup over-scheduling. Once a task has been preempted by a
task of the same or lower priority, it becomes ineligible for repeated
preemption by same until it has been ticked, or slept. Instead, the
task is marked for preemption at the next tick. Tasks of higher
priority still preempt immediately.
Signed-off-by: Mike Galbraith <efault@gmx.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 0bd8f2c0fb40..e8051bd59acb 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
@@ -445,6 +445,7 @@ enum { | |||
445 | SCHED_FEAT_TREE_AVG = 4, | 445 | SCHED_FEAT_TREE_AVG = 4, |
446 | SCHED_FEAT_APPROX_AVG = 8, | 446 | SCHED_FEAT_APPROX_AVG = 8, |
447 | SCHED_FEAT_WAKEUP_PREEMPT = 16, | 447 | SCHED_FEAT_WAKEUP_PREEMPT = 16, |
448 | SCHED_FEAT_PREEMPT_RESTRICT = 32, | ||
448 | }; | 449 | }; |
449 | 450 | ||
450 | const_debug unsigned int sysctl_sched_features = | 451 | const_debug unsigned int sysctl_sched_features = |
@@ -452,7 +453,8 @@ const_debug unsigned int sysctl_sched_features = | |||
452 | SCHED_FEAT_START_DEBIT *1 | | 453 | SCHED_FEAT_START_DEBIT *1 | |
453 | SCHED_FEAT_TREE_AVG *0 | | 454 | SCHED_FEAT_TREE_AVG *0 | |
454 | SCHED_FEAT_APPROX_AVG *0 | | 455 | SCHED_FEAT_APPROX_AVG *0 | |
455 | SCHED_FEAT_WAKEUP_PREEMPT *1; | 456 | SCHED_FEAT_WAKEUP_PREEMPT *1 | |
457 | SCHED_FEAT_PREEMPT_RESTRICT *1; | ||
456 | 458 | ||
457 | #define sched_feat(x) (sysctl_sched_features & SCHED_FEAT_##x) | 459 | #define sched_feat(x) (sysctl_sched_features & SCHED_FEAT_##x) |
458 | 460 | ||