]> granicus.if.org Git - strace/blob - get_robust_list.c
process.c: move get_robust_list parser to a separate file
[strace] / get_robust_list.c
1 #include "defs.h"
2
3 int
4 sys_get_robust_list(struct tcb *tcp)
5 {
6         if (entering(tcp)) {
7                 tprintf("%ld, ", (long) (pid_t) tcp->u_arg[0]);
8         } else {
9                 void *addr;
10                 size_t len;
11
12                 if (syserror(tcp) ||
13                     !tcp->u_arg[1] ||
14                     umove(tcp, tcp->u_arg[1], &addr) < 0) {
15                         tprintf("%#lx, ", tcp->u_arg[1]);
16                 } else {
17                         tprintf("[%p], ", addr);
18                 }
19
20                 if (syserror(tcp) ||
21                     !tcp->u_arg[2] ||
22                     umove(tcp, tcp->u_arg[2], &len) < 0) {
23                         tprintf("%#lx", tcp->u_arg[2]);
24                 } else {
25                         tprintf("[%lu]", (unsigned long) len);
26                 }
27         }
28         return 0;
29 }