From: Con Kolivas Some high credit tasks were being missed due to their prolonged cpu burn at startup flagging them as low credit tasks. Low credit tasks can now recover to become high credit. kernel/sched.c | 8 +++----- 1 files changed, 3 insertions(+), 5 deletions(-) diff -puN kernel/sched.c~o18.1int kernel/sched.c --- 25/kernel/sched.c~o18.1int 2003-08-26 18:32:20.000000000 -0700 +++ 25-akpm/kernel/sched.c 2003-08-26 18:32:20.000000000 -0700 @@ -140,9 +140,6 @@ #define LOW_CREDIT(p) \ ((p)->interactive_credit < -MAX_SLEEP_AVG) -#define VARYING_CREDIT(p) \ - (!(HIGH_CREDIT(p) || LOW_CREDIT(p))) - #define TASK_PREEMPTS_CURR(p, rq) \ ((p)->prio < (rq)->curr->prio) @@ -434,7 +431,7 @@ static void recalc_task_prio(task_t *p, if (p->sleep_avg > NS_MAX_SLEEP_AVG){ p->sleep_avg = NS_MAX_SLEEP_AVG; - p->interactive_credit += VARYING_CREDIT(p); + p->interactive_credit += !(HIGH_CREDIT(p)); } } } @@ -1548,7 +1545,8 @@ switch_tasks: prev->sleep_avg -= run_time; if ((long)prev->sleep_avg <= 0){ prev->sleep_avg = 0; - prev->interactive_credit -= VARYING_CREDIT(prev); + prev->interactive_credit -= + !(HIGH_CREDIT(prev) || LOW_CREDIT(prev)); } prev->timestamp = now; _