Messages in this thread Patch in this message |  | | | From | Nikhil Rao <> | | Subject | [PATCH v1 04/19] sched: update cpu_load to be u64 | | Date | Sun, 1 May 2011 18:19:02 -0700 |
| |
cpu_load derives from rq->load.weight and needs to be updated to u64 as it can now overflow on 32-bit machines. This patch updates cpu_load in rq struct, and all functions that use this field.
Signed-off-by: Nikhil Rao <ncrao@google.com> --- kernel/sched.c | 9 ++++----- 1 files changed, 4 insertions(+), 5 deletions(-) diff --git a/kernel/sched.c b/kernel/sched.c index 05e3fe2..7badde6 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -454,7 +454,7 @@ struct rq { */ unsigned long nr_running; #define CPU_LOAD_IDX_MAX 5 - unsigned long cpu_load[CPU_LOAD_IDX_MAX]; + u64 cpu_load[CPU_LOAD_IDX_MAX]; unsigned long last_load_update_tick; #ifdef CONFIG_NO_HZ u64 nohz_stamp; @@ -3364,8 +3364,7 @@ static const unsigned char * would be when CPU is idle and so we just decay the old load without * adding any new load. */ -static unsigned long -decay_load_missed(unsigned long load, unsigned long missed_updates, int idx) +static u64 decay_load_missed(u64 load, unsigned long missed_updates, int idx) { int j = 0; @@ -3395,7 +3394,7 @@ decay_load_missed(unsigned long load, unsigned long missed_updates, int idx) */ static void update_cpu_load(struct rq *this_rq) { - unsigned long this_load = this_rq->load.weight; + u64 this_load = this_rq->load.weight; unsigned long curr_jiffies = jiffies; unsigned long pending_updates; int i, scale; @@ -3412,7 +3411,7 @@ static void update_cpu_load(struct rq *this_rq) /* Update our load: */ this_rq->cpu_load[0] = this_load; /* Fasttrack for idx 0 */ for (i = 1, scale = 2; i < CPU_LOAD_IDX_MAX; i++, scale += scale) { - unsigned long old_load, new_load; + u64 old_load, new_load; /* scale is effectively 1 << i now, and >> i divides by scale */ -- 1.7.3.1
|  |