diff options
author | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-09-27 15:38:46 +0200 |
---|---|---|
committer | Justus Winter <4winter@informatik.uni-hamburg.de> | 2015-09-27 15:45:51 +0200 |
commit | 5e8955c2ad4b51acc96fdb671c4fef924dbc7f82 (patch) | |
tree | da8fcc4202ff9685f4e5719f67efb15c02598c63 /i386 | |
parent | 625801e5ada58af77861c72514ebc5521a67398f (diff) | |
download | gnumach-5e8955c2ad4b51acc96fdb671c4fef924dbc7f82.tar.gz gnumach-5e8955c2ad4b51acc96fdb671c4fef924dbc7f82.tar.bz2 gnumach-5e8955c2ad4b51acc96fdb671c4fef924dbc7f82.zip |
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.
Diffstat (limited to 'i386')
-rw-r--r-- | i386/i386/debug_i386.c | 5 |
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; } |