diff --git a/Makefile.am b/Makefile.am index ef1f1d00..b6503ed9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -56,6 +56,7 @@ strace_SOURCES = \ personality.c \ printmode.c \ process.c \ + process_vm.c \ ptp.c \ quota.c \ readahead.c \ diff --git a/process.c b/process.c index afb86de9..ede4224b 100644 --- a/process.c +++ b/process.c @@ -2532,56 +2532,3 @@ sys_getcpu(struct tcb *tcp) } return 0; } - -int -sys_process_vm_readv(struct tcb *tcp) -{ - if (entering(tcp)) { - /* arg 1: pid */ - tprintf("%ld, ", tcp->u_arg[0]); - } else { - /* arg 2: local iov */ - if (syserror(tcp)) { - tprintf("%#lx", tcp->u_arg[1]); - } else { - tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1); - } - /* arg 3: local iovcnt */ - tprintf(", %lu, ", tcp->u_arg[2]); - /* arg 4: remote iov */ - if (syserror(tcp)) { - tprintf("%#lx", tcp->u_arg[3]); - } else { - tprint_iov(tcp, tcp->u_arg[4], tcp->u_arg[3], 0); - } - /* arg 5: remote iovcnt */ - /* arg 6: flags */ - tprintf(", %lu, %lu", tcp->u_arg[4], tcp->u_arg[5]); - } - return 0; -} - -int -sys_process_vm_writev(struct tcb *tcp) -{ - if (entering(tcp)) { - /* arg 1: pid */ - tprintf("%ld, ", tcp->u_arg[0]); - /* arg 2: local iov */ - if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[1]); - else - tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1); - /* arg 3: local iovcnt */ - tprintf(", %lu, ", tcp->u_arg[2]); - /* arg 4: remote iov */ - if (syserror(tcp)) - tprintf("%#lx", tcp->u_arg[3]); - else - tprint_iov(tcp, tcp->u_arg[4], tcp->u_arg[3], 0); - /* arg 5: remote iovcnt */ - /* arg 6: flags */ - tprintf(", %lu, %lu", tcp->u_arg[4], tcp->u_arg[5]); - } - return 0; -} diff --git a/process_vm.c b/process_vm.c new file mode 100644 index 00000000..9bd85a87 --- /dev/null +++ b/process_vm.c @@ -0,0 +1,54 @@ +#include "defs.h" + +int +sys_process_vm_readv(struct tcb *tcp) +{ + if (entering(tcp)) { + /* arg 1: pid */ + tprintf("%ld, ", tcp->u_arg[0]); + } else { + /* arg 2: local iov */ + if (syserror(tcp)) { + tprintf("%#lx", tcp->u_arg[1]); + } else { + tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1); + } + /* arg 3: local iovcnt */ + tprintf(", %lu, ", tcp->u_arg[2]); + /* arg 4: remote iov */ + if (syserror(tcp)) { + tprintf("%#lx", tcp->u_arg[3]); + } else { + tprint_iov(tcp, tcp->u_arg[4], tcp->u_arg[3], 0); + } + /* arg 5: remote iovcnt */ + /* arg 6: flags */ + tprintf(", %lu, %lu", tcp->u_arg[4], tcp->u_arg[5]); + } + return 0; +} + +int +sys_process_vm_writev(struct tcb *tcp) +{ + if (entering(tcp)) { + /* arg 1: pid */ + tprintf("%ld, ", tcp->u_arg[0]); + /* arg 2: local iov */ + if (syserror(tcp)) + tprintf("%#lx", tcp->u_arg[1]); + else + tprint_iov(tcp, tcp->u_arg[2], tcp->u_arg[1], 1); + /* arg 3: local iovcnt */ + tprintf(", %lu, ", tcp->u_arg[2]); + /* arg 4: remote iov */ + if (syserror(tcp)) + tprintf("%#lx", tcp->u_arg[3]); + else + tprint_iov(tcp, tcp->u_arg[4], tcp->u_arg[3], 0); + /* arg 5: remote iovcnt */ + /* arg 6: flags */ + tprintf(", %lu, %lu", tcp->u_arg[4], tcp->u_arg[5]); + } + return 0; +}