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/

