1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
From 5e8955c2ad4b51acc96fdb671c4fef924dbc7f82 Mon Sep 17 00:00:00 2001
From: Justus Winter <4winter@informatik.uni-hamburg.de>
Date: Sun, 27 Sep 2015 15:38:46 +0200
Subject: [PATCH gnumach 4/4] 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.
---
i386/i386/debug_i386.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/i386/i386/debug_i386.c b/i386/i386/debug_i386.c
index 7a33350..233caa7 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;
}
--
2.1.4
|