svn commit: r242957 - head/sys/kern
Edward Tomasz Napierala
trasz at FreeBSD.org
Tue Nov 13 11:29:08 UTC 2012
Author: trasz
Date: Tue Nov 13 11:29:08 2012
New Revision: 242957
URL: http://svnweb.freebsd.org/changeset/base/242957
Log:
Don't divide by zero.
Tested by: swills
Modified:
head/sys/kern/kern_racct.c
Modified: head/sys/kern/kern_racct.c
==============================================================================
--- head/sys/kern/kern_racct.c Tue Nov 13 08:35:25 2012 (r242956)
+++ head/sys/kern/kern_racct.c Tue Nov 13 11:29:08 2012 (r242957)
@@ -921,9 +921,12 @@ racct_proc_exit(struct proc *p)
#endif
microuptime(&wallclock);
timevalsub(&wallclock, &p->p_stats->p_start);
- pct_estimate = (1000000 * runtime * 100) /
- ((uint64_t)wallclock.tv_sec * 1000000 +
- wallclock.tv_usec);
+ if (wallclock.tv_sec > 0 || wallclock.tv_usec > 0) {
+ pct_estimate = (1000000 * runtime * 100) /
+ ((uint64_t)wallclock.tv_sec * 1000000 +
+ wallclock.tv_usec);
+ } else
+ pct_estimate = 0;
pct = racct_getpcpu(p, pct_estimate);
mtx_lock(&racct_lock);
@@ -1136,9 +1139,12 @@ racctd(void)
runtime = p->p_prev_runtime;
#endif
p->p_prev_runtime = runtime;
- pct_estimate = (1000000 * runtime * 100) /
- ((uint64_t)wallclock.tv_sec * 1000000 +
- wallclock.tv_usec);
+ if (wallclock.tv_sec > 0 || wallclock.tv_usec > 0) {
+ pct_estimate = (1000000 * runtime * 100) /
+ ((uint64_t)wallclock.tv_sec * 1000000 +
+ wallclock.tv_usec);
+ } else
+ pct_estimate = 0;
pct = racct_getpcpu(p, pct_estimate);
mtx_lock(&racct_lock);
racct_set_force_locked(p, RACCT_PCTCPU, pct);
More information about the svn-src-all
mailing list