From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754923AbbJAApK (ORCPT ); Wed, 30 Sep 2015 20:45:10 -0400 Received: from shadbolt.e.decadent.org.uk ([88.96.1.126]:51536 "EHLO shadbolt.e.decadent.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754446AbbJAApI (ORCPT ); Wed, 30 Sep 2015 20:45:08 -0400 Message-ID: <1443660291.2730.17.camel@decadent.org.uk> Subject: [PATCH] perf: Fix time formatting for Y2038-compliant 32-bit architectures From: Ben Hutchings To: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo Cc: linux-kernel@vger.kernel.org, y2038@lists.linaro.org Date: Thu, 01 Oct 2015 01:44:51 +0100 Content-Type: multipart/signed; micalg="pgp-sha512"; protocol="application/pgp-signature"; boundary="=-wat32JPbag3oUw4MrcSR" X-Mailer: Evolution 3.16.5-1 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 192.168.4.247 X-SA-Exim-Mail-From: ben@decadent.org.uk X-SA-Exim-Scanned: No (on shadbolt.decadent.org.uk); SAEximRunCond expanded to false Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-wat32JPbag3oUw4MrcSR Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Fixes compiler errors such as this on x32: builtin-stat.c: In function =E2=80=98print_interval=E2=80=99: builtin-stat.c:909:18: error: format =E2=80=98%lu=E2=80=99 expects argument= of type =E2=80=98long unsigned int=E2=80=99, but argument 3 has type =E2= =80=98__time_t {aka long long int}=E2=80=99 [-Werror=3Dformat=3D] sprintf(prefix, "%6lu.%09lu%s", ts->tv_sec, ts->tv_nsec, csv_sep); ^ This isn't sufficient to make perf build for x32, but it gets us closer and helps to prepare for Y2038 support on other 32-bit architectures. Signed-off-by: Ben Hutchings --- tools/perf/bench/sched-messaging.c | 6 +++--- tools/perf/bench/sched-pipe.c | 8 ++++---- tools/perf/builtin-kvm.c | 2 +- tools/perf/builtin-stat.c | 4 +++- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/tools/perf/bench/sched-messaging.c b/tools/perf/bench/sched-me= ssaging.c index d7f281c..f71c41d 100644 --- a/tools/perf/bench/sched-messaging.c +++ b/tools/perf/bench/sched-messaging.c @@ -310,12 +310,12 @@ int bench_sched_messaging(int argc, const char **argv= , printf("# %d groups =3D=3D %d %s run\n\n", num_groups, num_groups * 2 * num_fds, thread_mode ? "threads" : "processes"); - printf(" %14s: %lu.%03lu [sec]\n", "Total time", - diff.tv_sec, + printf(" %14s: %llu.%03lu [sec]\n", "Total time", + (unsigned long long) diff.tv_sec, (unsigned long) (diff.tv_usec/1000)); break; case BENCH_FORMAT_SIMPLE: - printf("%lu.%03lu\n", diff.tv_sec, + printf("%llu.%03lu\n", (unsigned long long) diff.tv_sec, (unsigned long) (diff.tv_usec/1000)); break; default: diff --git a/tools/perf/bench/sched-pipe.c b/tools/perf/bench/sched-pipe.c index 005cc28..69ce697 100644 --- a/tools/perf/bench/sched-pipe.c +++ b/tools/perf/bench/sched-pipe.c @@ -156,8 +156,8 @@ int bench_sched_pipe(int argc, const char **argv, const= char *prefix __maybe_unu result_usec =3D diff.tv_sec * 1000000; result_usec +=3D diff.tv_usec; =20 - printf(" %14s: %lu.%03lu [sec]\n\n", "Total time", - diff.tv_sec, + printf(" %14s: %llu.%03lu [sec]\n\n", "Total time", + (unsigned long long) diff.tv_sec, (unsigned long) (diff.tv_usec/1000)); =20 printf(" %14lf usecs/op\n", @@ -168,8 +168,8 @@ int bench_sched_pipe(int argc, const char **argv, const= char *prefix __maybe_unu break; =20 case BENCH_FORMAT_SIMPLE: - printf("%lu.%03lu\n", - diff.tv_sec, + printf("%llu.%03lu\n", + (unsigned long long) diff.tv_sec, (unsigned long) (diff.tv_usec / 1000)); break; =20 diff --git a/tools/perf/builtin-kvm.c b/tools/perf/builtin-kvm.c index fc1cffb..26dff61 100644 --- a/tools/perf/builtin-kvm.c +++ b/tools/perf/builtin-kvm.c @@ -566,7 +566,7 @@ static void show_timeofday(void) gettimeofday(&tv, NULL); if (localtime_r(&tv.tv_sec, <ime)) { strftime(date, sizeof(date), "%H:%M:%S", <ime); - pr_info("%s.%06ld", date, tv.tv_usec); + pr_info("%s.%06lu", date, (unsigned long) tv.tv_usec); } else pr_info("00:00:00.000000"); =20 diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c index d46dbb1..fca784f 100644 --- a/tools/perf/builtin-stat.c +++ b/tools/perf/builtin-stat.c @@ -780,7 +780,9 @@ static void print_interval(char *prefix, struct timespe= c *ts) FILE *output =3D stat_config.output; static int num_print_interval; =20 - sprintf(prefix, "%6lu.%09lu%s", ts->tv_sec, ts->tv_nsec, csv_sep); + sprintf(prefix, "%6llu.%09lu%s", + (unsigned long long) ts->tv_sec, (unsigned long) ts->tv_nsec, + csv_sep); =20 if (num_print_interval =3D=3D 0 && !csv_output) { switch (stat_config.aggr_mode) { --=20 Ben Hutchings Knowledge is power. France is bacon. --=-wat32JPbag3oUw4MrcSR Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIVAwUAVgyCA+e/yOyVhhEJAQq88hAAtr6gZl3EtRdWvD5I/fkt+7A61ID8mGrD 1sWehSSj2SIZ4+C/c7jE0zkf8Gr5IjPpxf/AhqZnKRpSTPuxqIGqbZOFdDnlxnou y4SMM/i1IaKBhgeCeCBSXtQOilTZr7TuYoS3AJ/PF7EsF+qjCo8bhAEZ2MrPgqU0 fJPiM/OYvG5I8S12IrKJWB/eEQv4aS4DwAzPOI6PibfqKiGvk6X69JnWfqUM+zV/ 0r0aqFD5T7FjfC18bbJUZDHTA7Flq36+MMflM1pGxUHHDl+QOuZ7y5a9MIjJTajW YVOGCEfnXwZXmrp0ic9yfcmPoWVNGWmEqr8SH8SD7SzKxmEuXaozhTX/b9ck7acX KMrs0wI8HIu+1sonhqiWQNdRm55gV3EOHW4jmnJYzfB1YapA/FkxA5G2iazVZtFl QcdbKzQqLs0YvACUeMwhSK8ANBQdrXZ4zt+r2YF48WqTbQYkItSHI0wYT6rUaN4f 3rDA+zBFB9AvQ3N6BlRvVx99JVBekktVwHK60RPTPXyTIcHoFNXzuHKg62MzoXNT NSlYYzpK5FzUpLIVZkKPO7EymM1v9wtaaUhG71ckpbVi/2KzoVLNEK7FRkHfHRT0 Gfu3orOipfACKHlg6dBjrQzbHyRJyyy6rAezFNx2VHGv4VatCgW+DQvZu51gCy0u wDJpRLuVcA0= =8b8R -----END PGP SIGNATURE----- --=-wat32JPbag3oUw4MrcSR--