]> granicus.if.org Git - strace/blob - process_vm.c
Remove XLAT_END
[strace] / process_vm.c
1 /*
2  * Copyright (c) 2012 Denys Vlasenko <vda.linux@googlemail.com>
3  * Copyright (c) 2012-2015 Dmitry V. Levin <ldv@altlinux.org>
4  * Copyright (c) 2014-2018 The strace developers.
5  * All rights reserved.
6  *
7  * SPDX-License-Identifier: LGPL-2.1-or-later
8  */
9
10 #include "defs.h"
11
12 SYS_FUNC(process_vm_readv)
13 {
14         if (entering(tcp)) {
15                 /* arg 1: pid */
16                 tprintf("%d, ", (int) tcp->u_arg[0]);
17         } else {
18                 kernel_ulong_t local_iovcnt = tcp->u_arg[2];
19                 kernel_ulong_t remote_iovcnt = tcp->u_arg[4];
20                 kernel_ulong_t flags = tcp->u_arg[5];
21
22                 /* arg 2: local iov */
23                 tprint_iov_upto(tcp, local_iovcnt, tcp->u_arg[1],
24                            syserror(tcp) ? IOV_DECODE_ADDR : IOV_DECODE_STR,
25                            tcp->u_rval);
26                 /* arg 3: local iovcnt */
27                 tprintf(", %" PRI_klu ", ", local_iovcnt);
28                 /* arg 4: remote iov */
29                 tprint_iov(tcp, remote_iovcnt, tcp->u_arg[3],
30                            IOV_DECODE_ADDR);
31                 /* arg 5: remote iovcnt */
32                 /* arg 6: flags */
33                 tprintf(", %" PRI_klu ", %" PRI_klu, remote_iovcnt, flags);
34         }
35         return 0;
36 }
37
38 SYS_FUNC(process_vm_writev)
39 {
40         kernel_ulong_t local_iovcnt = tcp->u_arg[2];
41         kernel_ulong_t remote_iovcnt = tcp->u_arg[4];
42         kernel_ulong_t flags = tcp->u_arg[5];
43
44         /* arg 1: pid */
45         tprintf("%d, ", (int) tcp->u_arg[0]);
46         /* arg 2: local iov */
47         tprint_iov(tcp, local_iovcnt, tcp->u_arg[1], IOV_DECODE_STR);
48         /* arg 3: local iovcnt */
49         tprintf(", %" PRI_klu ", ", local_iovcnt);
50         /* arg 4: remote iov */
51         tprint_iov(tcp, remote_iovcnt, tcp->u_arg[3], IOV_DECODE_ADDR);
52         /* arg 5: remote iovcnt */
53         /* arg 6: flags */
54         tprintf(", %" PRI_klu ", %" PRI_klu, remote_iovcnt, flags);
55
56         return RVAL_DECODED;
57 }