Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

perf tools: Cast (struct timeval).tv_sec when printing

The musl-libc [1] defines (struct timeval).tv_sec as a 'long long' for
arm and other architectures. The default build having a '-Wformat' flag,
not casting the field when printing prevents from building perf.

This patch casts the (struct timeval).tv_sec fields to the expected
format.

[1] git://git.musl-libc.org/musl

Signed-off-by: Pierre Gondois <Pierre.Gondois@arm.com>
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Douglas.raillard@arm.com
Cc: Mark Rutland <mark.rutland@arm.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lore.kernel.org/lkml/20210224182410.5366-1-Pierre.Gondois@arm.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

authored by

Pierre Gondois and committed by
Arnaldo Carvalho de Melo
ded2e511 21b7e35b

+9 -9
+2 -2
tools/perf/bench/sched-messaging.c
··· 309 309 num_groups, num_groups * 2 * num_fds, 310 310 thread_mode ? "threads" : "processes"); 311 311 printf(" %14s: %lu.%03lu [sec]\n", "Total time", 312 - diff.tv_sec, 312 + (unsigned long) diff.tv_sec, 313 313 (unsigned long) (diff.tv_usec / USEC_PER_MSEC)); 314 314 break; 315 315 case BENCH_FORMAT_SIMPLE: 316 - printf("%lu.%03lu\n", diff.tv_sec, 316 + printf("%lu.%03lu\n", (unsigned long) diff.tv_sec, 317 317 (unsigned long) (diff.tv_usec / USEC_PER_MSEC)); 318 318 break; 319 319 default:
+2 -2
tools/perf/bench/sched-pipe.c
··· 156 156 result_usec += diff.tv_usec; 157 157 158 158 printf(" %14s: %lu.%03lu [sec]\n\n", "Total time", 159 - diff.tv_sec, 159 + (unsigned long) diff.tv_sec, 160 160 (unsigned long) (diff.tv_usec / USEC_PER_MSEC)); 161 161 162 162 printf(" %14lf usecs/op\n", ··· 168 168 169 169 case BENCH_FORMAT_SIMPLE: 170 170 printf("%lu.%03lu\n", 171 - diff.tv_sec, 171 + (unsigned long) diff.tv_sec, 172 172 (unsigned long) (diff.tv_usec / USEC_PER_MSEC)); 173 173 break; 174 174
+2 -2
tools/perf/bench/syscall.c
··· 54 54 result_usec += diff.tv_usec; 55 55 56 56 printf(" %14s: %lu.%03lu [sec]\n\n", "Total time", 57 - diff.tv_sec, 57 + (unsigned long) diff.tv_sec, 58 58 (unsigned long) (diff.tv_usec/1000)); 59 59 60 60 printf(" %14lf usecs/op\n", ··· 66 66 67 67 case BENCH_FORMAT_SIMPLE: 68 68 printf("%lu.%03lu\n", 69 - diff.tv_sec, 69 + (unsigned long) diff.tv_sec, 70 70 (unsigned long) (diff.tv_usec / 1000)); 71 71 break; 72 72
+2 -2
tools/perf/util/header.c
··· 1618 1618 1619 1619 fprintf(fp, "# clockid: %s (%u)\n", clockid_name(clockid), clockid); 1620 1620 fprintf(fp, "# reference time: %s = %ld.%06d (TOD) = %ld.%09ld (%s)\n", 1621 - tstr, tod_ns.tv_sec, (int) tod_ns.tv_usec, 1622 - clockid_ns.tv_sec, clockid_ns.tv_nsec, 1621 + tstr, (long) tod_ns.tv_sec, (int) tod_ns.tv_usec, 1622 + (long) clockid_ns.tv_sec, clockid_ns.tv_nsec, 1623 1623 clockid_name(clockid)); 1624 1624 } 1625 1625
+1 -1
tools/perf/util/stat-display.c
··· 983 983 if (config->interval_clear) 984 984 puts(CONSOLE_CLEAR); 985 985 986 - sprintf(prefix, "%6lu.%09lu%s", ts->tv_sec, ts->tv_nsec, config->csv_sep); 986 + sprintf(prefix, "%6lu.%09lu%s", (unsigned long) ts->tv_sec, ts->tv_nsec, config->csv_sep); 987 987 988 988 if ((num_print_interval == 0 && !config->csv_output) || config->interval_clear) { 989 989 switch (config->aggr_mode) {