blob: 34fbb728de70a8d017659dac116eab1479220e7b [file] [log] [blame]
#include <sys/ptrace.h>
#include <stdarg.h>
#include <unistd.h>
#include "syscall.h"
long ptrace(int req, ...) {
va_list ap;
pid_t pid;
void *addr, *data, *addr2;
long ret, result;
va_start(ap, req);
pid = va_arg(ap, pid_t);
addr = va_arg(ap, void*);
data = va_arg(ap, void*);
addr2 = va_arg(ap, void*);
va_end(ap);
if (req - 1U < 3)
data = &result;
ret = syscall(SYS_ptrace, req, pid, addr, data, addr2);
if (ret < 0 || req - 1U >= 3)
return ret;
return result;
}