Author: ken
Date: Thu Apr 11 21:18:04 2013
New Revision: 249384
URL: http://svnweb.freebsd.org/changeset/base/249384

Log:
  Fix bugs in the elapsed time calculation in ctlstat_standard()
  pointed out by bde:
  
  - Casting to long double isn't needed.
  - The division isn't needed, multiplication can be used.
    "When 1 nanosecond is in a floating point literal, the whole
    expression is automatically promoted correctly."
  - non-KNF indentation (1 tab) for the newly split line
  - different non-KNF indentation (5 spaces) for the previously split
    line
  - exessive parentheses around the division operation
  - bogus blank line which splits up the etime initialization
  - general verboseness from the above.
  
  Submitted by: bde
  MFC after:    3 days

Modified:
  head/usr.bin/ctlstat/ctlstat.c

Modified: head/usr.bin/ctlstat/ctlstat.c
==============================================================================
--- head/usr.bin/ctlstat/ctlstat.c      Thu Apr 11 21:17:49 2013        
(r249383)
+++ head/usr.bin/ctlstat/ctlstat.c      Thu Apr 11 21:18:04 2013        
(r249384)
@@ -404,7 +404,7 @@ ctlstat_json(struct ctlstat_context *ctx
 
 static void
 ctlstat_standard(struct ctlstat_context *ctx) {
-       long double cur_secs, prev_secs, etime;
+       long double etime;
        uint64_t delta_jiffies, delta_idle;
        uint32_t port;
        long double cpu_percentage;
@@ -416,12 +416,8 @@ ctlstat_standard(struct ctlstat_context 
        if (F_CPU(ctx) && (getcpu(&ctx->cur_cpu) != 0))
                errx(1, "error returned from getcpu()");
 
-       cur_secs = ctx->cur_time.tv_sec +
-               ((long double)ctx->cur_time.tv_nsec / 1000000000);
-       prev_secs = ctx->prev_time.tv_sec +
-            ((long double)ctx->prev_time.tv_nsec / 1000000000);
-
-       etime = cur_secs - prev_secs;
+       etime = ctx->cur_time.tv_sec - ctx->prev_time.tv_sec +                  
+           (ctx->prev_time.tv_nsec - ctx->cur_time.tv_nsec) * 1e-9; 
 
        if (F_CPU(ctx)) {
                ctx->prev_total_jiffies = ctx->cur_total_jiffies;
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to