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.
This commit is contained in:
Дмитрий Левин 2016-09-07 11:22:51 +00:00
parent 460c6253c4
commit ed292f62d6
2 changed files with 32 additions and 41 deletions

15
aio.c
View File

@ -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 {

View File

@ -40,18 +40,6 @@
&& defined __NR_io_destroy
# include <linux/aio_abi.h>
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;