aboutsummaryrefslogtreecommitdiffstats
path: root/get_robust_list.c
blob: d9e0f1aaec9d46abf8425b345d77008139f5e3b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include "defs.h"

SYS_FUNC(get_robust_list)
{
	if (entering(tcp)) {
		tprintf("%ld, ", (long) (pid_t) tcp->u_arg[0]);
	} else {
		void *addr;
		size_t len;

		if (syserror(tcp) ||
		    !tcp->u_arg[1] ||
		    umove(tcp, tcp->u_arg[1], &addr) < 0) {
			tprintf("%#lx, ", tcp->u_arg[1]);
		} else {
			tprintf("[%p], ", addr);
		}

		if (syserror(tcp) ||
		    !tcp->u_arg[2] ||
		    umove(tcp, tcp->u_arg[2], &len) < 0) {
			tprintf("%#lx", tcp->u_arg[2]);
		} else {
			tprintf("[%lu]", (unsigned long) len);
		}
	}
	return 0;
}