struct iocb contains two fields with fd semantics: aio_fildes and aio_resfd. It is quite reasonable to use appropriate function for printing them (apart from just "%d").
* aio.c (print_common_flags): Add struct tcb pointer to parameter list; use printfd for printing aio_resfd field. (print_iocb_header): Add struct tcb pointer to parameter list; use printfd for printing aio_fildes field. (print_iocb): provide tcp argument to print_iocb_header and print_common_flags. (SYS_FUNC(io_cancel)): Likewise. --- aio.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/aio.c b/aio.c index 29562d2..7b908d4 100644 --- a/aio.c +++ b/aio.c @@ -78,12 +78,14 @@ tprint_lio_opcode(unsigned cmd) } static void -print_common_flags(const struct iocb *cb) +print_common_flags(struct tcb *tcp, const struct iocb *cb) { /* IOCB_FLAG_RESFD is available since v2.6.22-rc1~47 */ #ifdef IOCB_FLAG_RESFD - if (cb->aio_flags & IOCB_FLAG_RESFD) - tprintf(", resfd=%d", cb->aio_resfd); + if (cb->aio_flags & IOCB_FLAG_RESFD) { + tprints(", resfd="); + printfd(tcp, cb->aio_resfd); + } if (cb->aio_flags & ~IOCB_FLAG_RESFD) tprintf(", flags=%x", cb->aio_flags); #endif @@ -98,7 +100,7 @@ iocb_is_valid(const struct iocb *cb) } static enum iocb_sub -print_iocb_header(const struct iocb *cb) +print_iocb_header(struct tcb *tcp, const struct iocb *cb) { enum iocb_sub sub; @@ -113,7 +115,8 @@ print_iocb_header(const struct iocb *cb) if (cb->aio_reqprio) tprintf(", reqprio=%hd", cb->aio_reqprio); - tprintf(", fildes=%d", cb->aio_fildes); + tprints(", fildes="); + printfd(tcp, cb->aio_fildes); return sub; } @@ -121,7 +124,7 @@ print_iocb_header(const struct iocb *cb) static void print_iocb(struct tcb *tcp, const struct iocb *cb) { - enum iocb_sub sub = print_iocb_header(cb); + enum iocb_sub sub = print_iocb_header(tcp, cb); switch (sub) { case SUB_COMMON: @@ -134,7 +137,7 @@ print_iocb(struct tcb *tcp, const struct iocb *cb) } tprintf(", nbytes=%" PRIu64 ", offset=%" PRId64, (uint64_t) cb->aio_nbytes, (int64_t) cb->aio_offset); - print_common_flags(cb); + print_common_flags(tcp, cb); break; case SUB_VECTOR: if (iocb_is_valid(cb)) { @@ -149,7 +152,7 @@ print_iocb(struct tcb *tcp, const struct iocb *cb) (uint64_t) cb->aio_nbytes); } tprintf(", offset=%" PRId64, (int64_t) cb->aio_offset); - print_common_flags(cb); + print_common_flags(tcp, cb); break; case SUB_NONE: break; @@ -214,7 +217,7 @@ SYS_FUNC(io_cancel) if (!umove_or_printaddr(tcp, tcp->u_arg[1], &cb)) { tprints("{"); - print_iocb_header(&cb); + print_iocb_header(tcp, &cb); tprints("}"); } tprints(", "); -- 1.7.10.4 ------------------------------------------------------------------------------ _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel