]> granicus.if.org Git - strace/commitdiff
aio: use PRINT_FIELD_* macros
authorDmitry V. Levin <ldv@altlinux.org>
Mon, 17 Jul 2017 11:59:26 +0000 (11:59 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Mon, 17 Jul 2017 11:59:26 +0000 (11:59 +0000)
This also fixes output correctness for struct iocb.

* aio.c: Include "print_fields.h".
(print_common_flags, print_iocb_header, print_iocb, print_io_event):
Use PRINT_FIELD_D, PRINT_FIELD_U, PRINT_FIELD_X, PRINT_FIELD_FD,
and PRINT_FIELD_STRN.
* tests/aio.c (main): Update expected output.

aio.c
tests/aio.c

diff --git a/aio.c b/aio.c
index 7adb20df758a9d4ce7e88c85ae528aeef5778d00..27799a992f811b94690ee01f81f6ed1549000295 100644 (file)
--- a/aio.c
+++ b/aio.c
@@ -30,6 +30,7 @@
  */
 
 #include "defs.h"
+#include "print_fields.h"
 #include <linux/aio_abi.h>
 
 SYS_FUNC(io_setup)
@@ -84,12 +85,11 @@ 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) {
-               tprints(", resfd=");
-               printfd(tcp, cb->aio_resfd);
-       }
+       if (cb->aio_flags & IOCB_FLAG_RESFD)
+               PRINT_FIELD_FD(", ", *cb, aio_resfd, tcp);
+
        if (cb->aio_flags & ~IOCB_FLAG_RESFD)
-               tprintf(", flags=%#x", cb->aio_flags);
+               PRINT_FIELD_X(", ", *cb, aio_flags);
 #endif
 }
 
@@ -106,19 +106,22 @@ print_iocb_header(struct tcb *tcp, const struct iocb *cb)
 {
        enum iocb_sub sub;
 
-       if (cb->aio_data)
-               tprintf("data=%#" PRIx64 ", ",
-                       (uint64_t) cb->aio_data);
+       if (cb->aio_data){
+               PRINT_FIELD_X("", *cb, aio_data);
+               tprints(", ");
+       }
 
-       if (cb->aio_key)
-               tprintf("key=%u, ", cb->aio_key);
+       if (cb->aio_key) {
+               PRINT_FIELD_U("", *cb, aio_key);
+               tprints(", ");
+       }
 
+       tprints("aio_lio_opcode=");
        sub = tprint_lio_opcode(cb->aio_lio_opcode);
        if (cb->aio_reqprio)
-               tprintf(", reqprio=%hd", cb->aio_reqprio);
+               PRINT_FIELD_D(", ", *cb, aio_reqprio);
 
-       tprints(", fildes=");
-       printfd(tcp, cb->aio_fildes);
+       PRINT_FIELD_FD(", ", *cb, aio_fildes, tcp);
 
        return sub;
 }
@@ -131,28 +134,27 @@ print_iocb(struct tcb *tcp, const struct iocb *cb)
        switch (sub) {
        case SUB_COMMON:
                if (cb->aio_lio_opcode == 1 && iocb_is_valid(cb)) {
-                       tprints(", str=");
-                       printstrn(tcp, cb->aio_buf, cb->aio_nbytes);
+                       PRINT_FIELD_STRN(", ", *cb, aio_buf,
+                                        cb->aio_nbytes, tcp);
                } else {
-                       tprintf(", buf=%#" PRIx64, (uint64_t) cb->aio_buf);
+                       PRINT_FIELD_X(", ", *cb, aio_buf);
                }
-               tprintf(", nbytes=%" PRIu64 ", offset=%" PRId64,
-                       (uint64_t) cb->aio_nbytes, (int64_t) cb->aio_offset);
+               PRINT_FIELD_U(", ", *cb, aio_nbytes);
+               PRINT_FIELD_D(", ", *cb, aio_offset);
                print_common_flags(tcp, cb);
                break;
        case SUB_VECTOR:
                if (iocb_is_valid(cb)) {
-                       tprints(", iovec=");
+                       tprints(", aio_buf=");
                        tprint_iov(tcp, cb->aio_nbytes, cb->aio_buf,
                                   cb->aio_lio_opcode == 8
                                   ? IOV_DECODE_STR
                                   : IOV_DECODE_ADDR);
                } else {
-                       tprintf(", buf=%#" PRIx64 ", nbytes=%" PRIu64,
-                               (uint64_t) cb->aio_buf,
-                               (uint64_t) cb->aio_nbytes);
+                       PRINT_FIELD_X(", ", *cb, aio_buf);
+                       PRINT_FIELD_U(", ", *cb, aio_nbytes);
                }
-               tprintf(", offset=%" PRId64, (int64_t) cb->aio_offset);
+               PRINT_FIELD_D(", ", *cb, aio_offset);
                print_common_flags(tcp, cb);
                break;
        case SUB_NONE:
@@ -204,10 +206,11 @@ print_io_event(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data)
 {
        struct io_event *event = elem_buf;
 
-       tprintf("{data=%#" PRIx64 ", obj=%#" PRIx64
-               ", res=%" PRId64 ", res2=%" PRId64 "}",
-               (uint64_t) event->data, (uint64_t) event->obj,
-               (int64_t) event->res, (int64_t) event->res2);
+       PRINT_FIELD_X("{", *event, data);
+       PRINT_FIELD_X(", ", *event, obj);
+       PRINT_FIELD_D(", ", *event, res);
+       PRINT_FIELD_D(", ", *event, res2);
+       tprints("}");
 
        return true;
 }
index 77b6c05d903663f2bf71c54696410ba1553a90ab..4ba1bec5df1d85c87d4c72d00de7fb690e06367c 100644 (file)
@@ -239,11 +239,12 @@ main(void)
        if (rc != (long) nr)
                perror_msg_and_skip("io_submit");
        printf("io_submit(%#lx, %u, ["
-              "{data=%#" PRI__x64 ", pread, reqprio=11, fildes=0, "
-               "buf=%p, nbytes=%u, offset=%" PRI__d64 "}, "
-              "{data=%#" PRI__x64 ", pread, reqprio=22, fildes=0, "
-               "buf=%p, nbytes=%u, offset=%" PRI__d64 "}"
-              "]) = %s\n",
+              "{aio_data=%#" PRI__x64 ", aio_lio_opcode=pread, aio_reqprio=11"
+              ", aio_fildes=0, aio_buf=%p, aio_nbytes=%u, aio_offset=%"
+               PRI__d64 "}, "
+              "{aio_data=%#" PRI__x64 ", aio_lio_opcode=pread, aio_reqprio=22"
+              ", aio_fildes=0, aio_buf=%p, aio_nbytes=%u, aio_offset=%"
+               PRI__d64 "}]) = %s\n",
               *ctx, nr,
               cb[0].aio_data, data0, sizeof_data0, cb[0].aio_offset,
               cb[1].aio_data, data1, sizeof_data1, cb[1].aio_offset,
@@ -299,8 +300,8 @@ main(void)
               sprintrc(rc));
 
        rc = syscall(__NR_io_cancel, *ctx, cbc, ev);
-       printf("io_cancel(%#lx, {data=%#" PRI__x64
-              ", pread, reqprio=99, fildes=-42}, %p) = %s\n",
+       printf("io_cancel(%#lx, {aio_data=%#" PRI__x64 ", aio_lio_opcode=pread"
+              ", aio_reqprio=99, aio_fildes=-42}, %p) = %s\n",
               *ctx, cbc->aio_data, ev, sprintrc(rc));
 
        rc = syscall(__NR_io_submit, (unsigned long) 0xfacef157beeff00dULL,
@@ -315,21 +316,24 @@ main(void)
 
        rc = syscall(__NR_io_submit, *ctx, 1057L, cbvs2);
        printf("io_submit(%#lx, %ld, ["
-              "{data=%#" PRI__x64 ", key=%u, %hu /* SUB_??? */, fildes=%d}, "
-              "{key=%u, pwrite, reqprio=%hd, fildes=%d, str=NULL"
-               ", nbytes=%" PRI__u64 ", offset=%" PRI__d64
+              "{aio_data=%#" PRI__x64 ", aio_key=%u"
+               ", aio_lio_opcode=%hu /* SUB_??? */, aio_fildes=%d}"
+               ", {aio_key=%u, aio_lio_opcode=pwrite, aio_reqprio=%hd"
+               ", aio_fildes=%d, aio_buf=NULL"
+               ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
 # ifdef IOCB_FLAG_RESFD
-               ", resfd=%d, flags=%#x"
+               ", aio_resfd=%d, aio_flags=%#x"
 # endif
-               "}, "
-              "{key=%u, pwrite, reqprio=%hd, fildes=%d, buf=%#" PRI__x64
-               ", nbytes=%" PRI__u64 ", offset=%" PRI__d64 "}, "
-              "{key=%u, pwrite, reqprio=%hd, fildes=%d"
-               ", str=\"\\0\\1\\2\\3%.28s\"..."
-               ", nbytes=%" PRI__u64 ", offset=%" PRI__d64 "}, "
-              "{key=%u, pwritev, reqprio=%hd, fildes=%d, buf=%#" PRI__x64
-               ", nbytes=%" PRI__u64 ", offset=%" PRI__d64 "}"
-              ", {NULL}, {%#lx}, %p]) = %s\n",
+              "}, {aio_key=%u, aio_lio_opcode=pwrite, aio_reqprio=%hd"
+               ", aio_fildes=%d, aio_buf=%#" PRI__x64
+               ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
+              "}, {aio_key=%u, aio_lio_opcode=pwrite, aio_reqprio=%hd"
+               ", aio_fildes=%d, aio_buf=\"\\0\\1\\2\\3%.28s\"..."
+               ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
+              "}, {aio_key=%u, aio_lio_opcode=pwritev, aio_reqprio=%hd"
+               ", aio_fildes=%d, aio_buf=%#" PRI__x64
+               ", aio_nbytes=%" PRI__u64 ", aio_offset=%" PRI__d64
+              "}, {NULL}, {%#lx}, %p]) = %s\n",
               *ctx, 1057L,
               cbv2[0].aio_data, cbv2[0].aio_key,
               cbv2[0].aio_lio_opcode, cbv2[0].aio_fildes,
@@ -350,12 +354,14 @@ main(void)
        if (rc != (long) nr)
                perror_msg_and_skip("io_submit");
        printf("io_submit(%#lx, %u, ["
-              "{data=%#" PRI__x64 ", preadv, reqprio=%hd, fildes=0, "
-               "iovec=[{iov_base=%p, iov_len=%u}"
-               ", {iov_base=%p, iov_len=%u}], offset=%" PRI__d64 "}, "
-              "{data=%#" PRI__x64 ", preadv, reqprio=%hd, fildes=0, "
-               "iovec=[{iov_base=%p, iov_len=%u}"
-               ", {iov_base=%p, iov_len=%u}], offset=%" PRI__d64 "}"
+              "{aio_data=%#" PRI__x64 ", aio_lio_opcode=preadv"
+               ", aio_reqprio=%hd, aio_fildes=0, "
+               "aio_buf=[{iov_base=%p, iov_len=%u}"
+              ", {iov_base=%p, iov_len=%u}], aio_offset=%" PRI__d64 "}, "
+              "{aio_data=%#" PRI__x64 ", aio_lio_opcode=preadv"
+               ", aio_reqprio=%hd, aio_fildes=0"
+               ", aio_buf=[{iov_base=%p, iov_len=%u}"
+               ", {iov_base=%p, iov_len=%u}], aio_offset=%" PRI__d64 "}"
               "]) = %s\n",
               *ctx, nr,
               cbv[0].aio_data, cbv[0].aio_reqprio,