Browse Source

implement ptrace syscall wrapper (untested)

Rich Felker 13 năm trước cách đây
mục cha
commit
71f7a3c2ce
2 tập tin đã thay đổi với 19 bổ sung1 xóa
  1. 1 1
      include/sys/ptrace.h
  2. 18 0
      src/misc/ptrace.c

+ 1 - 1
include/sys/ptrace.h

@@ -69,7 +69,7 @@ extern "C" {
 #define PTRACE_EVENT_VFORK_DONE 5
 #define PTRACE_EVENT_EXIT 6
 
-long int ptrace(int, ...);
+long ptrace(int, ...);
 
 #ifdef __cplusplus
 }

+ 18 - 0
src/misc/ptrace.c

@@ -0,0 +1,18 @@
+#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;
+	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);
+	return syscall(SYS_ptrace, req, pid, addr, data, addr2);
+}