ptrace.c 482 B

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