diff options
author | bde <bde@FreeBSD.org> | 1998-11-26 16:49:55 +0000 |
---|---|---|
committer | bde <bde@FreeBSD.org> | 1998-11-26 16:49:55 +0000 |
commit | 8fdbb5fce3dcffafe4407722bf38a7a0d32dee3b (patch) | |
tree | 8c7aaf40f253a30a74560d7fea3d20751a62e72d /sys/kern | |
parent | 043d2a6202a58316ccd35b2684e63881f10f31bd (diff) | |
download | FreeBSD-src-8fdbb5fce3dcffafe4407722bf38a7a0d32dee3b.zip FreeBSD-src-8fdbb5fce3dcffafe4407722bf38a7a0d32dee3b.tar.gz |
Fixed the previous fix - stathz doesn't give the statclock frequency
when it is 0.
Submitted by: mostly by Hidetoshi Shimokawa <simokawa@sat.t.u-tokyo.ac.jp>
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/kern_synch.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sys/kern/kern_synch.c b/sys/kern/kern_synch.c index ae47d9b..40fcdcc 100644 --- a/sys/kern/kern_synch.c +++ b/sys/kern/kern_synch.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)kern_synch.c 8.9 (Berkeley) 5/19/95 - * $Id: kern_synch.c,v 1.66 1998/11/26 14:00:08 bde Exp $ + * $Id: kern_synch.c,v 1.67 1998/11/26 14:05:58 bde Exp $ */ #include "opt_ktrace.h" @@ -253,9 +253,10 @@ schedcpu(arg) { register fixpt_t loadfac = loadfactor(averunnable.ldavg[0]); register struct proc *p; - register int s; + register int realstathz, s; register unsigned int newcpu; + realstathz = stathz ? stathz : hz; for (p = allproc.lh_first; p != 0; p = p->p_list.le_next) { /* * Increment time in/out of memory and sleep time @@ -277,13 +278,13 @@ schedcpu(arg) * p_pctcpu is only for ps. */ #if (FSHIFT >= CCPU_SHIFT) - p->p_pctcpu += (stathz == 100)? + p->p_pctcpu += (realstathz == 100)? ((fixpt_t) p->p_cpticks) << (FSHIFT - CCPU_SHIFT): 100 * (((fixpt_t) p->p_cpticks) - << (FSHIFT - CCPU_SHIFT)) / stathz; + << (FSHIFT - CCPU_SHIFT)) / realstathz; #else p->p_pctcpu += ((FSCALE - ccpu) * - (p->p_cpticks * FSCALE / stathz)) >> FSHIFT; + (p->p_cpticks * FSCALE / realstathz)) >> FSHIFT; #endif p->p_cpticks = 0; newcpu = (u_int) decay_cpu(loadfac, p->p_estcpu) + p->p_nice; |