summaryrefslogtreecommitdiff
path: root/debian/patches/random-fixes0004-i386-trace-syscalls-of-a-single-task.patch
blob: 123d76f315b1dbbfd1f27e9873cd106a63f827a6 (plain)
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