Messages in this thread Patch in this message | | | From | Adrian Hunter <> | Subject | [PATCH V4 14/21] perf tools: change "machine" functions to set thread pid | Date | Thu, 4 Jul 2013 16:20:33 +0300 |
| |
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 <adrian.hunter@intel.com> --- 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
| |