Typically tracking events such as mmap events, comm events,
fork events and exit events, are processed by "machine"
functions.  Change these functions to put pid in the new
pid_ member of struct thread.

Signed-off-by: Adrian Hunter <[email protected]>
---
 tools/perf/util/machine.c | 21 +++++++++++++++++----
 tools/perf/util/machine.h |  2 ++
 2 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c
index fe5d9db..a7ed350 100644
--- a/tools/perf/util/machine.c
+++ b/tools/perf/util/machine.c
@@ -287,6 +287,12 @@ struct thread *machine__findnew_thread(struct machine 
*machine, pid_t tid)
        return __machine__findnew_thread(machine, 0, tid, true);
 }
 
+struct thread *machine__findnew_thread_ex(struct machine *machine, pid_t pid,
+                                         pid_t tid)
+{
+       return __machine__findnew_thread(machine, pid, tid, true);
+}
+
 struct thread *machine__find_thread(struct machine *machine, pid_t tid)
 {
        return __machine__findnew_thread(machine, 0, tid, false);
@@ -294,7 +300,9 @@ struct thread *machine__find_thread(struct machine 
*machine, pid_t tid)
 
 int machine__process_comm_event(struct machine *machine, union perf_event 
*event)
 {
-       struct thread *thread = machine__findnew_thread(machine, 
event->comm.tid);
+       struct thread *thread = machine__findnew_thread_ex(machine,
+                                                          event->comm.pid,
+                                                          event->comm.tid);
 
        if (dump_trace)
                perf_event__fprintf_comm(event, stdout);
@@ -975,7 +983,8 @@ int machine__process_mmap_event(struct machine *machine, 
union perf_event *event
                return 0;
        }
 
-       thread = machine__findnew_thread(machine, event->mmap.pid);
+       thread = machine__findnew_thread_ex(machine, event->mmap.pid,
+                                           event->mmap.pid);
        if (thread == NULL)
                goto out_problem;
 
@@ -1002,8 +1011,12 @@ out_problem:
 
 int machine__process_fork_event(struct machine *machine, union perf_event 
*event)
 {
-       struct thread *thread = machine__findnew_thread(machine, 
event->fork.tid);
-       struct thread *parent = machine__findnew_thread(machine, 
event->fork.ptid);
+       struct thread *thread = machine__findnew_thread_ex(machine,
+                                                          event->fork.pid,
+                                                          event->fork.tid);
+       struct thread *parent = machine__findnew_thread_ex(machine,
+                                                          event->fork.ppid,
+                                                          event->fork.ptid);
 
        if (dump_trace)
                perf_event__fprintf_task(event, stdout);
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h
index e49ba01..d986ecf 100644
--- a/tools/perf/util/machine.h
+++ b/tools/perf/util/machine.h
@@ -100,6 +100,8 @@ static inline bool machine__is_host(struct machine *machine)
 }
 
 struct thread *machine__findnew_thread(struct machine *machine, pid_t tid);
+struct thread *machine__findnew_thread_ex(struct machine *machine, pid_t pid,
+                                         pid_t tid);
 
 size_t machine__fprintf(struct machine *machine, FILE *fp);
 
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to