From ed26c4cdc889b82eca1c2b61f8d46d131635f6a0 Mon Sep 17 00:00:00 2001 From: "Dmitry V. Levin" Date: Sat, 4 May 2019 23:15:52 +0000 Subject: [PATCH] Change signatures of print_*time* functions to match print_timex Make all these functions that print time by address return -1 when umove_or_printaddr() returns non-zero. This helps to use these functions as parameters to other functions. * defs.h [ALPHA] (print_timeval32, print_timeval32_utimes, print_itimerval32): Change return type to int. * desc.c (decode_select): Change return type of print_tv_ts to int. * print_timespec.c (print_timespec, print_timespec_utime_pair, print_itimerspec): Change return type to int, return -1 when umove_or_printaddr() returns non-zero. * print_timeval.c (print_timeval, print_timeval_utimes, print_itimerval): Likewise. [ALPHA] (print_timeval32, print_timeval32_utimes, print_itimerval32): Likewise. --- defs.h | 6 +++--- desc.c | 2 +- print_timespec.c | 15 +++++++++------ print_timeval.c | 30 ++++++++++++++++++------------ 4 files changed, 31 insertions(+), 22 deletions(-) diff --git a/defs.h b/defs.h index 88dad64d..fb466cb9 100644 --- a/defs.h +++ b/defs.h @@ -1115,9 +1115,9 @@ typedef struct { extern void print_timeval32_t(const timeval32_t *); extern void printrusage32(struct tcb *, kernel_ulong_t); extern const char *sprint_timeval32(struct tcb *, kernel_ulong_t addr); -extern void print_timeval32(struct tcb *, kernel_ulong_t addr); -extern void print_timeval32_utimes(struct tcb *, kernel_ulong_t addr); -extern void print_itimerval32(struct tcb *, kernel_ulong_t addr); +extern int print_timeval32(struct tcb *, kernel_ulong_t addr); +extern int print_timeval32_utimes(struct tcb *, kernel_ulong_t addr); +extern int print_itimerval32(struct tcb *, kernel_ulong_t addr); # endif # ifdef HAVE_STRUCT_USER_DESC diff --git a/desc.c b/desc.c index 690b81df..c1536248 100644 --- a/desc.c +++ b/desc.c @@ -52,7 +52,7 @@ SYS_FUNC(dup3) static int decode_select(struct tcb *const tcp, const kernel_ulong_t *const args, - void (*const print_tv_ts) (struct tcb *, kernel_ulong_t), + int (*const print_tv_ts) (struct tcb *, kernel_ulong_t), const char * (*const sprint_tv_ts) (struct tcb *, kernel_ulong_t)) { int i, j; diff --git a/print_timespec.c b/print_timespec.c index 14dd2d60..97c6bc30 100644 --- a/print_timespec.c +++ b/print_timespec.c @@ -91,15 +91,16 @@ MPERS_PRINTER_DECL(bool, print_struct_timespec_array_data_size, return true; } -MPERS_PRINTER_DECL(void, print_timespec, +MPERS_PRINTER_DECL(int, print_timespec, struct tcb *const tcp, const kernel_ulong_t addr) { timespec_t t; if (umove_or_printaddr(tcp, addr, &t)) - return; + return -1; print_timespec_t(&t); + return 0; } MPERS_PRINTER_DECL(const char *, sprint_timespec, @@ -122,32 +123,34 @@ MPERS_PRINTER_DECL(const char *, sprint_timespec, return buf; } -MPERS_PRINTER_DECL(void, print_timespec_utime_pair, +MPERS_PRINTER_DECL(int, print_timespec_utime_pair, struct tcb *const tcp, const kernel_ulong_t addr) { timespec_t t[2]; if (umove_or_printaddr(tcp, addr, &t)) - return; + return -1; tprints("["); print_timespec_t_utime(&t[0]); tprints(", "); print_timespec_t_utime(&t[1]); tprints("]"); + return 0; } -MPERS_PRINTER_DECL(void, print_itimerspec, +MPERS_PRINTER_DECL(int, print_itimerspec, struct tcb *const tcp, const kernel_ulong_t addr) { timespec_t t[2]; if (umove_or_printaddr(tcp, addr, &t)) - return; + return -1; tprints("{it_interval="); print_timespec_t(&t[0]); tprints(", it_value="); print_timespec_t(&t[1]); tprints("}"); + return 0; } diff --git a/print_timeval.c b/print_timeval.c index 6f639001..bb73e7c0 100644 --- a/print_timeval.c +++ b/print_timeval.c @@ -50,30 +50,32 @@ MPERS_PRINTER_DECL(bool, print_struct_timeval_data_size, return true; } -MPERS_PRINTER_DECL(void, print_timeval, +MPERS_PRINTER_DECL(int, print_timeval, struct tcb *const tcp, const kernel_ulong_t addr) { timeval_t t; if (umove_or_printaddr(tcp, addr, &t)) - return; + return -1; print_timeval_t(&t); + return 0; } -MPERS_PRINTER_DECL(void, print_timeval_utimes, +MPERS_PRINTER_DECL(int, print_timeval_utimes, struct tcb *const tcp, const kernel_ulong_t addr) { timeval_t t[2]; if (umove_or_printaddr(tcp, addr, &t)) - return; + return -1; tprints("["); print_timeval_t_utime(&t[0]); tprints(", "); print_timeval_t_utime(&t[1]); tprints("]"); + return 0; } MPERS_PRINTER_DECL(const char *, sprint_timeval, @@ -96,19 +98,20 @@ MPERS_PRINTER_DECL(const char *, sprint_timeval, return buf; } -MPERS_PRINTER_DECL(void, print_itimerval, +MPERS_PRINTER_DECL(int, print_itimerval, struct tcb *const tcp, const kernel_ulong_t addr) { timeval_t t[2]; if (umove_or_printaddr(tcp, addr, &t)) - return; + return -1; tprints("{it_interval="); print_timeval_t(&t[0]); tprints(", it_value="); print_timeval_t(&t[1]); tprints("}"); + return 0; } #ifdef ALPHA @@ -128,45 +131,48 @@ print_timeval32_t_utime(const timeval32_t *t) zero_extend_signed_to_ull(t->tv_usec))); } -void +int print_timeval32(struct tcb *const tcp, const kernel_ulong_t addr) { timeval32_t t; if (umove_or_printaddr(tcp, addr, &t)) - return; + return -1; print_timeval32_t(&t); + return 0; } -void +int print_timeval32_utimes(struct tcb *const tcp, const kernel_ulong_t addr) { timeval32_t t[2]; if (umove_or_printaddr(tcp, addr, &t)) - return; + return -1; tprints("["); print_timeval32_t_utime(&t[0]); tprints(", "); print_timeval32_t_utime(&t[1]); tprints("]"); + return 0; } -void +int print_itimerval32(struct tcb *const tcp, const kernel_ulong_t addr) { timeval32_t t[2]; if (umove_or_printaddr(tcp, addr, &t)) - return; + return -1; tprints("{it_interval="); print_timeval32_t(&t[0]); tprints(", it_value="); print_timeval32_t(&t[1]); tprints("}"); + return 0; } const char * -- 2.40.0