From 06819f09fe14bbcce2949499e0e100308d362ac9 Mon Sep 17 00:00:00 2001 From: Lai Jiangshan Date: Thu, 12 Jun 2008 16:43:07 +0800 Subject: [PATCH] --- yaml --- r: 98031 b: refs/heads/master c: 7a232e0350940d2664f4de5cc3f0f443bae5062d h: refs/heads/master i: 98029: a2de652b90397b722dfb435d9241396423eb5b18 98027: e7755f65b2ce5ed6ab7fa859c715f55a1807d62a 98023: f42e7e5e3cda70cb0dc307f2c2d628caa4cfe81a 98015: d5a0bb7128b548321e48238c6a4adcccd6d3dc30 v: v3 --- [refs] | 2 +- trunk/kernel/sched.c | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 6149f6dc4b6c..534ccd9403e4 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 2e084786f6fe052274f1dfa7c675fe4a02cacd6e +refs/heads/master: 7a232e0350940d2664f4de5cc3f0f443bae5062d diff --git a/trunk/kernel/sched.c b/trunk/kernel/sched.c index 6c1ecbdc0db9..eaf6751e7612 100644 --- a/trunk/kernel/sched.c +++ b/trunk/kernel/sched.c @@ -1340,8 +1340,13 @@ calc_delta_mine(unsigned long delta_exec, unsigned long weight, { u64 tmp; - if (!lw->inv_weight) - lw->inv_weight = 1 + (WMULT_CONST-lw->weight/2)/(lw->weight+1); + if (!lw->inv_weight) { + if (BITS_PER_LONG > 32 && unlikely(lw->weight >= WMULT_CONST)) + lw->inv_weight = 1; + else + lw->inv_weight = 1 + (WMULT_CONST-lw->weight/2) + / (lw->weight+1); + } tmp = (u64)delta_exec * weight; /*