OLD | NEW |
1 #include <sys/ptrace.h> | 1 #include <sys/ptrace.h> |
2 #include <stdarg.h> | 2 #include <stdarg.h> |
3 #include <unistd.h> | 3 #include <unistd.h> |
4 #include "syscall.h" | 4 #include "syscall.h" |
5 | 5 |
6 long ptrace(int req, ...) | 6 long ptrace(int req, ...) { |
7 { | 7 va_list ap; |
8 » va_list ap; | 8 pid_t pid; |
9 » pid_t pid; | 9 void *addr, *data, *addr2; |
10 » void *addr, *data, *addr2; | 10 long ret, result; |
11 » long ret, result; | |
12 | 11 |
13 » va_start(ap, req); | 12 va_start(ap, req); |
14 » pid = va_arg(ap, pid_t); | 13 pid = va_arg(ap, pid_t); |
15 » addr = va_arg(ap, void *); | 14 addr = va_arg(ap, void*); |
16 » data = va_arg(ap, void *); | 15 data = va_arg(ap, void*); |
17 » addr2 = va_arg(ap, void *); | 16 addr2 = va_arg(ap, void*); |
18 » va_end(ap); | 17 va_end(ap); |
19 | 18 |
20 » if (req-1U < 3) data = &result; | 19 if (req - 1U < 3) |
21 » ret = syscall(SYS_ptrace, req, pid, addr, data, addr2); | 20 data = &result; |
| 21 ret = syscall(SYS_ptrace, req, pid, addr, data, addr2); |
22 | 22 |
23 » if (ret < 0 || req-1U >= 3) return ret; | 23 if (ret < 0 || req - 1U >= 3) |
24 » return result; | 24 return ret; |
| 25 return result; |
25 } | 26 } |
OLD | NEW |