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 <evgsyr@gmail.com>
This commit is contained in:
2016-11-28 04:07:37 +00:00
parent 5f6a839d23
commit 70864ce6e0
6 changed files with 46 additions and 40 deletions

View File

@@ -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)
{

View File

@@ -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",

View File

@@ -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

View File

@@ -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,

View File

@@ -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)

8
v4l2.c
View File

@@ -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("}");