On Thu, Aug 18, 2022 at 04:05:37PM +0200, Jan Beulich wrote:
> "int" is not a suitable type to convert time()'s return value to. Avoid
> casts and other extra fiddling by using difftime(), on the assumption
> that the overhead of using "double" doesn't matter here.

dump_stats() seems to be only used once, so it's probably fine.

> Coverity ID: 1509374
> Signed-off-by: Jan Beulich <jbeul...@suse.com>
> 
> --- unstable.orig/tools/xenmon/xenbaked.c     2022-01-06 16:12:39.000000000 
> +0100
> +++ unstable/tools/xenmon/xenbaked.c  2022-08-18 15:36:39.918706853 +0200
> @@ -230,11 +230,7 @@ static void check_gotten_sum(void)
>  static void dump_stats(void) 
>  {
>      stat_map_t *smt = stat_map;
> -    time_t end_time, run_time;
> -
> -    time(&end_time);
> -
> -    run_time = end_time - start_time;
> +    double run_time = difftime(time(NULL), start_time);
>  
>      printf("Event counts:\n");
>      while (smt->text != NULL) {
> @@ -242,13 +238,11 @@ static void dump_stats(void)
>          smt++;
>      }
>  
> -    printf("processed %d total records in %d seconds (%ld per second)\n",
> -           rec_count, (int)run_time,
> -           run_time ? (long)(rec_count/run_time) : 0L);
> +    printf("processed %d total records in %0f seconds (%0f per second)\n",

Did you want to write "%.0f" or even "%.f" instead of "%0f"? It seems
that the '0' here mean '0'-padded, but without field width there would
be nothing to pad. I'm guessing you would want printf to write something
like "266 seconds" instead of "266.646168 seconds". Am I missing
something ?

> +           rec_count, run_time, run_time ? rec_count / run_time : 0);
>  
> -    printf("woke up %d times in %d seconds (%ld per second)\n",
> -           wakeups, (int) run_time,
> -           run_time ? (long)(wakeups/run_time) : 0L);
> +    printf("woke up %d times in %0f seconds (%0f per second)\n",
> +           wakeups, run_time, run_time ? wakeups / run_time : 0);
>  
>      check_gotten_sum();
>  }
> 

-- 
Anthony PERARD

Reply via email to