* defs.h (print_timespec): Remove.
* print_time.c (print_timespec): New mpers printer.
* futex.c (sys_futex): Use print_timespec instead of printtv.
* ipc_sem.c (sys_semtimedop): Likewise.
* mq.c (sys_mq_timedsend, sys_mq_timedreceive): Likewise.
* time.c (clock_settime, clock_gettime, clock_nanosleep): Likewise.
(print_timespec): Remove.
#define printtv_special(tcp, addr) \
printtv_bitness((tcp), (addr), BITNESS_CURRENT, 1)
extern char *sprinttv(char *, struct tcb *, long, enum bitness_t, int special);
-extern void print_timespec(struct tcb *, long);
extern void sprint_timespec(char *, struct tcb *, long);
extern void printfd(struct tcb *, int);
extern bool print_sockaddr_by_inode(const unsigned long, const char *);
case FUTEX_WAIT:
case FUTEX_LOCK_PI:
tprints(", ");
- printtv(tcp, timeout);
+ print_timespec(tcp, timeout);
break;
case FUTEX_WAIT_BITSET:
tprints(", ");
- printtv(tcp, timeout);
+ print_timespec(tcp, timeout);
tprintf(", %x", val3);
break;
case FUTEX_WAKE_BITSET:
break;
case FUTEX_WAIT_REQUEUE_PI:
tprints(", ");
- printtv(tcp, timeout);
+ print_timespec(tcp, timeout);
tprints(", ");
printaddr(uaddr2);
break;
tprint_sembuf_array(tcp, tcp->u_arg[3], tcp->u_arg[1]);
tprints(", ");
#if defined(S390) || defined(S390X)
- printtv(tcp, tcp->u_arg[2]);
+ print_timespec(tcp, tcp->u_arg[2]);
#else
- printtv(tcp, tcp->u_arg[4]);
+ print_timespec(tcp, tcp->u_arg[4]);
#endif
} else {
tprint_sembuf_array(tcp, tcp->u_arg[1], tcp->u_arg[2]);
tprints(", ");
- printtv(tcp, tcp->u_arg[3]);
+ print_timespec(tcp, tcp->u_arg[3]);
}
return RVAL_DECODED;
}
tprintf("%ld, ", tcp->u_arg[0]);
printstr(tcp, tcp->u_arg[1], tcp->u_arg[2]);
tprintf(", %lu, %ld, ", tcp->u_arg[2], tcp->u_arg[3]);
- printtv(tcp, tcp->u_arg[4]);
+ print_timespec(tcp, tcp->u_arg[4]);
return RVAL_DECODED;
}
* whether the syscall has failed or not.
*/
temporarily_clear_syserror(tcp);
- printtv(tcp, tcp->u_arg[4]);
+ print_timespec(tcp, tcp->u_arg[4]);
restore_cleared_syserror(tcp);
}
return 0;
tprintf(time_fmt, (intmax_t) t->tv_sec, (intmax_t) t->tv_usec);
}
+MPERS_PRINTER_DECL(void, print_timespec)(struct tcb *tcp, const long addr)
+{
+ timespec_t t;
+
+ if (umove_or_printaddr(tcp, addr, &t))
+ return;
+
+ print_timespec_t(&t);
+}
+
MPERS_PRINTER_DECL(void, print_timespec_utime_pair)(struct tcb *tcp, const long addr)
{
timespec_t t[2];
return buf + sprintf(buf, "%#lx", addr);
}
-void
-print_timespec(struct tcb *tcp, long addr)
-{
- char buf[TIMESPEC_TEXT_BUFSIZE];
- sprint_timespec(buf, tcp, addr);
- tprints(buf);
-}
-
void
sprint_timespec(char *buf, struct tcb *tcp, long addr)
{
{
printclockname(tcp->u_arg[0]);
tprints(", ");
- printtv(tcp, tcp->u_arg[1]);
+ print_timespec(tcp, tcp->u_arg[1]);
return RVAL_DECODED;
}
printclockname(tcp->u_arg[0]);
tprints(", ");
} else {
- printtv(tcp, tcp->u_arg[1]);
+ print_timespec(tcp, tcp->u_arg[1]);
}
return 0;
}
tprints(", ");
printflags(clockflags, tcp->u_arg[1], "TIMER_???");
tprints(", ");
- printtv(tcp, tcp->u_arg[2]);
+ print_timespec(tcp, tcp->u_arg[2]);
tprints(", ");
} else {
/*
*/
if (!tcp->u_arg[1] && is_erestart(tcp)) {
temporarily_clear_syserror(tcp);
- printtv(tcp, tcp->u_arg[3]);
+ print_timespec(tcp, tcp->u_arg[3]);
restore_cleared_syserror(tcp);
} else {
printaddr(tcp->u_arg[3]);