All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] perf tools: Fix ppid for non-main thread
@ 2015-04-09 16:48 David Ahern
  2015-04-09 17:05 ` Don Zickus
  2015-04-11  6:36 ` [tip:perf/core] perf tools: Fix synthesizing fork_event.ppid " tip-bot for David Ahern
  0 siblings, 2 replies; 4+ messages in thread
From: David Ahern @ 2015-04-09 16:48 UTC (permalink / raw)
  To: acme; +Cc: linux-kernel, David Ahern, Don Zickus

Commit ca6c41c59b9 sets the ppid based on what is read from the
/proc/pid/status file when synthesizing fork events. This is correct
thing to do for new processes but not threads of a process. Fix
ppid for threads to be the main thread when synthesizing fork events
(ie., assume main thread spawned all sub-threads in a process).

Reported-by: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>
Signed-off-by: David Ahern <david.ahern@oracle.com>
Cc: Don Zickus <dzickus@redhat.com>
---
 tools/perf/util/event.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/tools/perf/util/event.c b/tools/perf/util/event.c
index 186929a..ff866c4 100644
--- a/tools/perf/util/event.c
+++ b/tools/perf/util/event.c
@@ -183,8 +183,18 @@ static int perf_event__synthesize_fork(struct perf_tool *tool,
 {
 	memset(&event->fork, 0, sizeof(event->fork) + machine->id_hdr_size);
 
-	event->fork.ppid = ppid;
-	event->fork.ptid = ppid;
+	/*
+	 * for main thread set parent to ppid from status file. For other
+	 * threads set parent pid to main thread. ie., assume main thread
+	 * spawns all threads in a process
+	*/
+	if (tgid == pid) {
+		event->fork.ppid = ppid;
+		event->fork.ptid = ppid;
+	} else {
+		event->fork.ppid = tgid;
+		event->fork.ptid = tgid;
+	}
 	event->fork.pid  = tgid;
 	event->fork.tid  = pid;
 	event->fork.header.type = PERF_RECORD_FORK;
-- 
1.7.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2015-04-11  6:37 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-09 16:48 [PATCH] perf tools: Fix ppid for non-main thread David Ahern
2015-04-09 17:05 ` Don Zickus
2015-04-09 17:08   ` David Ahern
2015-04-11  6:36 ` [tip:perf/core] perf tools: Fix synthesizing fork_event.ppid " tip-bot for David Ahern

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.