Fix a time calculation error in ctlstat_standard().

ctlstat.c:	When converting a timeval to a floating point
		number in ctlstat_standard(), cast the nanoseconds
		calculation to a long double, so we don't lose
		precision.  Without the cast, we wind up with a
		time in whole seconds only.

Sponsored by:	Spectra Logic
MFC after:	3 days
This commit is contained in:
Kenneth D. Merry 2013-04-10 16:01:45 +00:00
parent 7f15a8dff2
commit ffc3b12c07

View File

@ -416,9 +416,10 @@ ctlstat_standard(struct ctlstat_context *ctx) {
if (F_CPU(ctx) && (getcpu(&ctx->cur_cpu) != 0))
errx(1, "error returned from getcpu()");
cur_secs = ctx->cur_time.tv_sec + (ctx->cur_time.tv_nsec / 1000000000);
cur_secs = ctx->cur_time.tv_sec +
((long double)ctx->cur_time.tv_nsec / 1000000000);
prev_secs = ctx->prev_time.tv_sec +
(ctx->prev_time.tv_nsec / 1000000000);
((long double)ctx->prev_time.tv_nsec / 1000000000);
etime = cur_secs - prev_secs;