summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustus Winter <4winter@informatik.uni-hamburg.de>2015-09-27 15:38:46 +0200
committerJustus Winter <4winter@informatik.uni-hamburg.de>2015-09-27 15:45:51 +0200
commit5e8955c2ad4b51acc96fdb671c4fef924dbc7f82 (patch)
treeda8fcc4202ff9685f4e5719f67efb15c02598c63
parent625801e5ada58af77861c72514ebc5521a67398f (diff)
i386: trace syscalls of a single task
* i386/i386/debug_i386.c (syscall_trace_task): New variable. (syscall_trace_print): If set, trace only syscalls from this task.
-rw-r--r--i386/i386/debug_i386.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/i386/i386/debug_i386.c b/i386/i386/debug_i386.c
index 7a33350f..233caa72 100644
--- a/i386/i386/debug_i386.c
+++ b/i386/i386/debug_i386.c
@@ -131,6 +131,7 @@ debug_trace_dump(void)
#include <kern/syscall_sw.h>
int syscall_trace = 0;
+task_t syscall_trace_task;
int
syscall_trace_print(int syscallvec, ...)
@@ -139,6 +140,9 @@ syscall_trace_print(int syscallvec, ...)
int i;
const mach_trap_t *trap = &mach_trap_table[syscallnum];
+ if (syscall_trace_task && syscall_trace_task != current_task())
+ goto out;
+
printf("0x%08x:0x%08x:%s(",
current_task(), current_thread(), trap->mach_trap_name);
for (i = 0; i < trap->mach_trap_arg_count; i++) {
@@ -154,6 +158,7 @@ syscall_trace_print(int syscallvec, ...)
}
printf(")\n");
+ out:
return syscallvec;
}