From: Dmitry V. Levin Date: Wed, 7 Sep 2016 11:22:51 +0000 (+0000) Subject: aio: print aio_context_t as a pointer type X-Git-Tag: v4.14~101 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ed292f62d67f5f748c4710a8e03888a205cbd6f7;p=strace aio: print aio_context_t as a pointer type As aio_context_t is treated by the kernel as a pointer, print it using printaddr. * aio.c (SYS_FUNC(io_setup)): Print the pointer to aio_context_t argument using printnum_ptr. (SYS_FUNC(io_destroy), SYS_FUNC(io_submit), SYS_FUNC(io_cancel), SYS_FUNC(io_getevents)): Print aio_context_t argument using printaddr. * tests/aio.c (sprint_aio_context_t): Remove. (main): Update expected output. --- diff --git a/aio.c b/aio.c index 7b908d45..7caccddf 100644 --- a/aio.c +++ b/aio.c @@ -36,13 +36,13 @@ SYS_FUNC(io_setup) if (entering(tcp)) tprintf("%u, ", (unsigned int) tcp->u_arg[0]); else - printnum_ulong(tcp, tcp->u_arg[1]); + printnum_ptr(tcp, tcp->u_arg[1]); return 0; } SYS_FUNC(io_destroy) { - tprintf("%lu", tcp->u_arg[0]); + printaddr(tcp->u_arg[0]); return RVAL_DECODED; } @@ -185,7 +185,8 @@ SYS_FUNC(io_submit) const unsigned long addr = tcp->u_arg[2]; unsigned long iocbp; - tprintf("%lu, %ld, ", tcp->u_arg[0], nr); + printaddr(tcp->u_arg[0]); + tprintf(", %ld, ", nr); if (nr < 0) printaddr(addr); @@ -212,7 +213,9 @@ print_io_event(struct tcb *tcp, void *elem_buf, size_t elem_size, void *data) SYS_FUNC(io_cancel) { if (entering(tcp)) { - tprintf("%lu, ", tcp->u_arg[0]); + printaddr(tcp->u_arg[0]); + tprints(", "); + struct iocb cb; if (!umove_or_printaddr(tcp, tcp->u_arg[1], &cb)) { @@ -233,8 +236,8 @@ SYS_FUNC(io_cancel) SYS_FUNC(io_getevents) { if (entering(tcp)) { - tprintf("%lu, %ld, %ld, ", - tcp->u_arg[0], + printaddr(tcp->u_arg[0]); + tprintf(", %ld, %ld, ", widen_to_long(tcp->u_arg[1]), widen_to_long(tcp->u_arg[2])); } else { diff --git a/tests/aio.c b/tests/aio.c index 891f6dd5..b4ce9754 100644 --- a/tests/aio.c +++ b/tests/aio.c @@ -40,18 +40,6 @@ && defined __NR_io_destroy # include -const char * -sprint_aio_context_t(aio_context_t ctx) -{ - static char buf[sizeof("") + sizeof(aio_context_t) * 3]; - - if (sizeof(aio_context_t) > sizeof(long)) - snprintf(buf, sizeof(buf), "%llu", (unsigned long long)ctx); - else - snprintf(buf, sizeof(buf), "%lu", (unsigned long)ctx); - - return buf; -} int main(void) { @@ -229,26 +217,26 @@ main(void) if (syscall(__NR_io_setup, lnr, ctx)) perror_msg_and_skip("io_setup"); - printf("io_setup(%u, [%lu]) = 0\n", nr, *ctx); + printf("io_setup(%u, [%#lx]) = 0\n", nr, *ctx); rc = syscall(__NR_io_submit, (aio_context_t) 0xface1e55deadbeefLL, (long) 0xca7faceddeadf00dLL, NULL); - printf("io_submit(%s, %ld, NULL) = %s\n", - sprint_aio_context_t((aio_context_t) 0xface1e55deadbeefLL), + printf("io_submit(%#lx, %ld, NULL) = %s\n", + (long) 0xface1e55deadbeefLL, (long) 0xca7faceddeadf00dLL, sprintrc(rc)); rc = syscall(__NR_io_submit, *ctx, nr, cbs + nr); - printf("io_submit(%lu, %ld, %p) = %s\n", - *ctx, (long)nr, cbs + nr, sprintrc(rc)); + printf("io_submit(%#lx, %ld, %p) = %s\n", + *ctx, (long) nr, cbs + nr, sprintrc(rc)); rc = syscall(__NR_io_submit, *ctx, -1L, cbs); - printf("io_submit(%lu, -1, %p) = %s\n", + printf("io_submit(%#lx, -1, %p) = %s\n", *ctx, cbs, sprintrc(rc)); rc = syscall(__NR_io_submit, *ctx, nr, cbs); if (rc != (long) nr) perror_msg_and_skip("io_submit"); - printf("io_submit(%lu, %u, [" + printf("io_submit(%#lx, %u, [" "{data=%#llx, pread, reqprio=11, fildes=0, " "buf=%p, nbytes=%u, offset=%lld}, " "{data=%#llx, pread, reqprio=22, fildes=0, " @@ -264,21 +252,21 @@ main(void) rc = syscall(__NR_io_getevents, (aio_context_t) 0xface1e55deadbeefLL, (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL, ev + 1, NULL); - printf("io_getevents(%s, %ld, %ld, %p, NULL) = %s\n", - sprint_aio_context_t((aio_context_t) 0xface1e55deadbeefLL), + printf("io_getevents(%#lx, %ld, %ld, %p, NULL) = %s\n", + (long) 0xface1e55deadbeefLL, (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL, ev + 1, sprintrc(rc)); rc = syscall(__NR_io_getevents, (aio_context_t) 0xface1e55deadbeefLL, (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL, NULL, ts + 1); - printf("io_getevents(%s, %ld, %ld, NULL, %p) = %s\n", - sprint_aio_context_t((aio_context_t) 0xface1e55deadbeefLL), + printf("io_getevents(%#lx, %ld, %ld, NULL, %p) = %s\n", + (long) 0xface1e55deadbeefLL, (long) 0xca7faceddeadf00dLL, (long) 0xba5e1e505ca571e0LL, ts + 1, sprintrc(rc)); rc = syscall(__NR_io_getevents, *ctx, nr, nr + 1, ev, ts); - printf("io_getevents(%lu, %ld, %ld, [" + printf("io_getevents(%#lx, %ld, %ld, [" "{data=%#llx, obj=%p, res=%u, res2=0}, " "{data=%#llx, obj=%p, res=%u, res2=0}" "], {0, 123456789}) = %s\n", @@ -288,29 +276,29 @@ main(void) sprintrc(rc)); rc = syscall(__NR_io_cancel, *ctx, NULL, NULL); - printf("io_cancel(%lu, NULL, NULL) = %s\n", *ctx, sprintrc(rc)); + printf("io_cancel(%#lx, NULL, NULL) = %s\n", *ctx, sprintrc(rc)); rc = syscall(__NR_io_cancel, *ctx, cbc + 1, ev); - printf("io_cancel(%lu, %p, %p) = %s\n", *ctx, cbc + 1, ev, + printf("io_cancel(%#lx, %p, %p) = %s\n", *ctx, cbc + 1, ev, sprintrc(rc)); rc = syscall(__NR_io_cancel, *ctx, cbc, ev); - printf("io_cancel(%lu, {data=%#llx, pread, reqprio=99, fildes=-42}, %p) " - "= %s\n", + printf("io_cancel(%#lx, {data=%#llx, pread, reqprio=99, fildes=-42}" + ", %p) = %s\n", *ctx, (unsigned long long) cbc->aio_data, ev, sprintrc(rc)); rc = syscall(__NR_io_submit, (unsigned long) 0xfacef157beeff00dULL, (long) 0xdeadc0defacefeedLL, NULL); - printf("io_submit(%lu, %ld, NULL) = %s\n", - (unsigned long) 0xfacef157beeff00dULL, + printf("io_submit(%#lx, %ld, NULL) = %s\n", + (long) 0xfacef157beeff00dULL, (long) 0xdeadc0defacefeedLL, sprintrc(rc)); rc = syscall(__NR_io_submit, *ctx, -1L, cbvs + nr); - printf("io_submit(%lu, %ld, %p) = %s\n", + printf("io_submit(%#lx, %ld, %p) = %s\n", *ctx, -1L, cbvs + nr, sprintrc(rc)); rc = syscall(__NR_io_submit, *ctx, 1057L, cbvs2); - printf("io_submit(%lu, %ld, [" + printf("io_submit(%#lx, %ld, [" "{data=%#llx, key=%u, %hu /* SUB_??? */, fildes=%d}, " "{key=%u, pwrite, reqprio=%hd, fildes=%d, str=NULL" ", nbytes=%llu, offset=%lld" @@ -345,7 +333,7 @@ main(void) rc = syscall(__NR_io_submit, *ctx, nr, cbvs); if (rc != (long) nr) perror_msg_and_skip("io_submit"); - printf("io_submit(%lu, %u, [" + printf("io_submit(%#lx, %u, [" "{data=%#llx, preadv, reqprio=%hd, fildes=0, " "iovec=[{iov_base=%p, iov_len=%u}" ", {iov_base=%p, iov_len=%u}], offset=%lld}, " @@ -365,11 +353,11 @@ main(void) sprintrc(rc)); rc = syscall(__NR_io_destroy, (unsigned long) 0xfacefeedb000b1e5ULL); - printf("io_destroy(%lu) = %s\n", + printf("io_destroy(%#lx) = %s\n", (unsigned long) 0xfacefeedb000b1e5ULL, sprintrc(rc)); rc = syscall(__NR_io_destroy, *ctx); - printf("io_destroy(%lu) = %s\n", *ctx, sprintrc(rc)); + printf("io_destroy(%#lx) = %s\n", *ctx, sprintrc(rc)); puts("+++ exited with 0 +++"); return 0;