]> granicus.if.org Git - strace/blob - process_vm.c
io.c: use printaddr and umove_or_printaddr
[strace] / process_vm.c
1 #include "defs.h"
2
3 SYS_FUNC(process_vm_readv)
4 {
5         if (entering(tcp)) {
6                 /* arg 1: pid */
7                 tprintf("%ld, ", tcp->u_arg[0]);
8         } else {
9                 /* arg 2: local iov */
10                 if (syserror(tcp)) {
11                         printaddr(tcp->u_arg[1]);
12                 } else {
13                         tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1);
14                 }
15                 /* arg 3: local iovcnt */
16                 tprintf(", %lu, ", tcp->u_arg[2]);
17                 /* arg 4: remote iov */
18                 if (syserror(tcp)) {
19                         printaddr(tcp->u_arg[3]);
20                 } else {
21                         tprint_iov(tcp, tcp->u_arg[4], tcp->u_arg[3], 0);
22                 }
23                 /* arg 5: remote iovcnt */
24                 /* arg 6: flags */
25                 tprintf(", %lu, %lu", tcp->u_arg[4], tcp->u_arg[5]);
26         }
27         return 0;
28 }
29
30 SYS_FUNC(process_vm_writev)
31 {
32         /* arg 1: pid */
33         tprintf("%ld, ", tcp->u_arg[0]);
34         /* arg 2: local iov */
35         tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1);
36         /* arg 3: local iovcnt */
37         tprintf(", %lu, ", tcp->u_arg[2]);
38         /* arg 4: remote iov */
39         tprint_iov(tcp, tcp->u_arg[4], tcp->u_arg[3], 0);
40         /* arg 5: remote iovcnt */
41         /* arg 6: flags */
42         tprintf(", %lu, %lu", tcp->u_arg[4], tcp->u_arg[5]);
43
44         return RVAL_DECODED;
45 }