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],