diff -urN linux/arch/i386/kernel/smp.c linux-2.2.3-uptime/arch/i386/kernel/smp.c --- linux/arch/i386/kernel/smp.c Tue Feb 16 22:20:05 1999 +++ linux-2.2.3-uptime/arch/i386/kernel/smp.c Fri Mar 19 12:59:04 1999 @@ -1705,9 +1705,8 @@ system=1; irq_enter(cpu, 0); + update_one_process(p, 1, user, system, cpu); if (p->pid) { - update_one_process(p, 1, user, system, cpu); - p->counter -= 1; if (p->counter < 0) { p->counter = 0; @@ -1720,10 +1719,8 @@ kstat.cpu_user += user; kstat.per_cpu_user[cpu] += user; } - kstat.cpu_system += system; kstat.per_cpu_system[cpu] += system; - } prof_counter[cpu]=prof_multiplier[cpu]; irq_exit(cpu, 0); diff -urN linux/fs/proc/array.c linux-2.2.3-uptime/fs/proc/array.c --- linux/fs/proc/array.c Mon Mar 8 19:07:29 1999 +++ linux-2.2.3-uptime/fs/proc/array.c Fri Mar 19 12:58:24 1999 @@ -231,9 +231,8 @@ int i, len; unsigned sum = 0; extern unsigned long total_forks; - unsigned long ticks; + unsigned long jiffies_saved = jiffies; - ticks = jiffies * smp_num_cpus; for (i = 0 ; i < NR_IRQS ; i++) sum += kstat_irqs(i); @@ -243,14 +242,15 @@ kstat.cpu_user, kstat.cpu_nice, kstat.cpu_system, - jiffies*smp_num_cpus - (kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system)); + jiffies_saved*smp_num_cpus - \ + (kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system)); for (i = 0 ; i < smp_num_cpus; i++) len += sprintf(buffer + len, "cpu%d %u %u %u %lu\n", i, kstat.per_cpu_user[cpu_logical_map(i)], kstat.per_cpu_nice[cpu_logical_map(i)], kstat.per_cpu_system[cpu_logical_map(i)], - jiffies - ( kstat.per_cpu_user[cpu_logical_map(i)] \ + jiffies_saved - ( kstat.per_cpu_user[cpu_logical_map(i)] \ + kstat.per_cpu_nice[cpu_logical_map(i)] \ + kstat.per_cpu_system[cpu_logical_map(i)])); len += sprintf(buffer + len, @@ -276,7 +276,7 @@ kstat.cpu_user, kstat.cpu_nice, kstat.cpu_system, - ticks - (kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system), + jiffies_saved - (kstat.cpu_user + kstat.cpu_nice + kstat.cpu_system), #endif kstat.dk_drive[0], kstat.dk_drive[1], kstat.dk_drive[2], kstat.dk_drive[3],