From 70864ce6e0218d054dc14a7fddf61ca7e4b0c38c Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Mon, 28 Nov 2016 04:07:37 +0000 Subject: [PATCH] Print struct timeval consistently Use print_struct_timeval interface to print struct timeval. * print_timeval.c (print_struct_timeval): New mpers printer. * print_timex.c (print_timex): Use it. * printrusage.c (printrusage): Likewise. * v4l2.c (print_v4l2_buffer): Likewise. * tests/getrusage.c (main): Print tv_sec and tv_usec fields as signed. * tests/waitid.c (sprint_rusage): Likewise. Suggested-by: Eugene Syromyatnikov --- print_timeval.c | 5 +++++ print_timex.c | 5 ++--- printrusage.c | 44 +++++++++++++++++++++++--------------------- tests/getrusage.c | 12 ++++++------ tests/waitid.c | 12 ++++++------ v4l2.c | 8 ++++---- 6 files changed, 46 insertions(+), 40 deletions(-) diff --git a/print_timeval.c b/print_timeval.c index ca943949..6bb3e697 100644 --- a/print_timeval.c +++ b/print_timeval.c @@ -41,6 +41,11 @@ print_timeval_t(const timeval_t *t) tprintf(timeval_fmt, (intmax_t) t->tv_sec, (intmax_t) t->tv_usec); } +MPERS_PRINTER_DECL(void, print_struct_timeval, const void *arg) +{ + print_timeval_t(arg); +} + MPERS_PRINTER_DECL(void, print_timeval, struct tcb *tcp, const long addr) { diff --git a/print_timex.c b/print_timex.c index 21ac0e4a..38bc09aa 100644 --- a/print_timex.c +++ b/print_timex.c @@ -53,11 +53,10 @@ MPERS_PRINTER_DECL(int, print_timex, struct tcb *tcp, const long addr) (intmax_t) tx.offset, (intmax_t) tx.freq, (uintmax_t) tx.maxerror, (uintmax_t) tx.esterror); printflags(adjtimex_status, tx.status, "STA_???"); - tprintf(", constant=%jd, precision=%ju, tolerance=%jd", + tprintf(", constant=%jd, precision=%ju, tolerance=%jd, time=", (intmax_t) tx.constant, (uintmax_t) tx.precision, (intmax_t) tx.tolerance); - tprintf(", time={tv_sec=%jd, tv_usec=%jd}", - (intmax_t) tx.time.tv_sec, (intmax_t) tx.time.tv_usec); + MPERS_FUNC_NAME(print_struct_timeval)(&tx.time); tprintf(", tick=%jd, ppsfreq=%jd, jitter=%jd", (intmax_t) tx.tick, (intmax_t) tx.ppsfreq, (intmax_t) tx.jitter); tprintf(", shift=%d, stabil=%jd, jitcnt=%jd", diff --git a/printrusage.c b/printrusage.c index 5dff1c6e..fce4e325 100644 --- a/printrusage.c +++ b/printrusage.c @@ -44,30 +44,32 @@ MPERS_PRINTER_DECL(void, printrusage, struct tcb *tcp, long addr) if (umove_or_printaddr(tcp, addr, &ru)) return; - tprintf("{ru_utime={tv_sec=%llu, tv_usec=%llu}, " - "ru_stime={tv_sec=%llu, tv_usec=%llu}, ", - zero_extend_signed_to_ull(ru.ru_utime.tv_sec), - zero_extend_signed_to_ull(ru.ru_utime.tv_usec), - zero_extend_signed_to_ull(ru.ru_stime.tv_sec), - zero_extend_signed_to_ull(ru.ru_stime.tv_usec)); + tprints("{ru_utime="); + MPERS_FUNC_NAME(print_struct_timeval)(&ru.ru_utime); + tprints(", ru_stime="); + MPERS_FUNC_NAME(print_struct_timeval)(&ru.ru_stime); if (abbrev(tcp)) - tprints("...}"); + tprints(", ..."); else { - tprintf("ru_maxrss=%llu, ", zero_extend_signed_to_ull(ru.ru_maxrss)); - tprintf("ru_ixrss=%llu, ", zero_extend_signed_to_ull(ru.ru_ixrss)); - tprintf("ru_idrss=%llu, ", zero_extend_signed_to_ull(ru.ru_idrss)); - tprintf("ru_isrss=%llu, ", zero_extend_signed_to_ull(ru.ru_isrss)); - tprintf("ru_minflt=%llu, ", zero_extend_signed_to_ull(ru.ru_minflt)); - tprintf("ru_majflt=%llu, ", zero_extend_signed_to_ull(ru.ru_majflt)); - tprintf("ru_nswap=%llu, ", zero_extend_signed_to_ull(ru.ru_nswap)); - tprintf("ru_inblock=%llu, ", zero_extend_signed_to_ull(ru.ru_inblock)); - tprintf("ru_oublock=%llu, ", zero_extend_signed_to_ull(ru.ru_oublock)); - tprintf("ru_msgsnd=%llu, ", zero_extend_signed_to_ull(ru.ru_msgsnd)); - tprintf("ru_msgrcv=%llu, ", zero_extend_signed_to_ull(ru.ru_msgrcv)); - tprintf("ru_nsignals=%llu, ", zero_extend_signed_to_ull(ru.ru_nsignals)); - tprintf("ru_nvcsw=%llu, ", zero_extend_signed_to_ull(ru.ru_nvcsw)); - tprintf("ru_nivcsw=%llu}", zero_extend_signed_to_ull(ru.ru_nivcsw)); +#define PRINT_RUSAGE_MEMBER(member) \ + tprintf(", " #member "=%llu", zero_extend_signed_to_ull(ru.member)) + PRINT_RUSAGE_MEMBER(ru_maxrss); + PRINT_RUSAGE_MEMBER(ru_ixrss); + PRINT_RUSAGE_MEMBER(ru_idrss); + PRINT_RUSAGE_MEMBER(ru_isrss); + PRINT_RUSAGE_MEMBER(ru_minflt); + PRINT_RUSAGE_MEMBER(ru_majflt); + PRINT_RUSAGE_MEMBER(ru_nswap); + PRINT_RUSAGE_MEMBER(ru_inblock); + PRINT_RUSAGE_MEMBER(ru_oublock); + PRINT_RUSAGE_MEMBER(ru_msgsnd); + PRINT_RUSAGE_MEMBER(ru_msgrcv); + PRINT_RUSAGE_MEMBER(ru_nsignals); + PRINT_RUSAGE_MEMBER(ru_nvcsw); + PRINT_RUSAGE_MEMBER(ru_nivcsw); +#undef PRINT_RUSAGE_MEMBER } + tprints("}"); } #ifdef ALPHA diff --git a/tests/getrusage.c b/tests/getrusage.c index 8bea24f2..8b76eff6 100644 --- a/tests/getrusage.c +++ b/tests/getrusage.c @@ -41,16 +41,16 @@ main(void) { struct rusage *const usage = tail_alloc(sizeof(struct rusage)); int rc = syscall(__NR_getrusage, RUSAGE_SELF, usage); - printf("getrusage(RUSAGE_SELF, {ru_utime={tv_sec=%ju, tv_usec=%ju}" - ", ru_stime={tv_sec=%ju, tv_usec=%ju}, ru_maxrss=%lu" + printf("getrusage(RUSAGE_SELF, {ru_utime={tv_sec=%jd, tv_usec=%jd}" + ", ru_stime={tv_sec=%jd, tv_usec=%jd}, ru_maxrss=%lu" ", ru_ixrss=%lu, ru_idrss=%lu, ru_isrss=%lu, ru_minflt=%lu" ", ru_majflt=%lu, ru_nswap=%lu, ru_inblock=%lu" ", ru_oublock=%lu, ru_msgsnd=%lu, ru_msgrcv=%lu" ", ru_nsignals=%lu, ru_nvcsw=%lu, ru_nivcsw=%lu}) = %d\n", - (uintmax_t) usage->ru_utime.tv_sec, - (uintmax_t) usage->ru_utime.tv_usec, - (uintmax_t) usage->ru_stime.tv_sec, - (uintmax_t) usage->ru_stime.tv_usec, + (intmax_t) usage->ru_utime.tv_sec, + (intmax_t) usage->ru_utime.tv_usec, + (intmax_t) usage->ru_stime.tv_sec, + (intmax_t) usage->ru_stime.tv_usec, usage->ru_maxrss, usage->ru_ixrss, usage->ru_idrss, usage->ru_isrss, usage->ru_minflt, usage->ru_majflt, usage->ru_nswap, usage->ru_inblock, usage->ru_oublock, diff --git a/tests/waitid.c b/tests/waitid.c index db15b824..6df25da6 100644 --- a/tests/waitid.c +++ b/tests/waitid.c @@ -42,8 +42,8 @@ sprint_rusage(const struct rusage *const ru) { static char buf[1024]; snprintf(buf, sizeof(buf), - "{ru_utime={tv_sec=%llu, tv_usec=%llu}" - ", ru_stime={tv_sec=%llu, tv_usec=%llu}" + "{ru_utime={tv_sec=%lld, tv_usec=%lld}" + ", ru_stime={tv_sec=%lld, tv_usec=%lld}" #if VERBOSE ", ru_maxrss=%llu" ", ru_ixrss=%llu" @@ -62,10 +62,10 @@ sprint_rusage(const struct rusage *const ru) #else ", ...}" #endif - , zero_extend_signed_to_ull(ru->ru_utime.tv_sec) - , zero_extend_signed_to_ull(ru->ru_utime.tv_usec) - , zero_extend_signed_to_ull(ru->ru_stime.tv_sec) - , zero_extend_signed_to_ull(ru->ru_stime.tv_usec) + , (long long) ru->ru_utime.tv_sec + , (long long) ru->ru_utime.tv_usec + , (long long) ru->ru_stime.tv_sec + , (long long) ru->ru_stime.tv_usec #if VERBOSE , zero_extend_signed_to_ull(ru->ru_maxrss) , zero_extend_signed_to_ull(ru->ru_ixrss) diff --git a/v4l2.c b/v4l2.c index c204fe5b..3aee199c 100644 --- a/v4l2.c +++ b/v4l2.c @@ -366,10 +366,10 @@ print_v4l2_buffer(struct tcb *tcp, const unsigned int code, const long arg) tprintf(", length=%u, bytesused=%u, flags=", b.length, b.bytesused); printflags(v4l2_buf_flags, b.flags, "V4L2_BUF_FLAG_???"); - if (code == VIDIOC_DQBUF) - tprintf(", timestamp = {%ju.%06ju}", - (uintmax_t)b.timestamp.tv_sec, - (uintmax_t)b.timestamp.tv_usec); + if (code == VIDIOC_DQBUF) { + tprints(", timestamp = "); + MPERS_FUNC_NAME(print_struct_timeval)(&b.timestamp); + } tprints(", ..."); } tprints("}"); -- 2.50.1