diff options
| author | Jiri Olsa <jolsa@redhat.com> | 2014-03-14 10:00:03 -0400 |
|---|---|---|
| committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-03-14 17:08:42 -0400 |
| commit | d75e6097ef1f7669deb500fbbdf53cfe524f1b53 (patch) | |
| tree | 73f8b07ee0b43ebd93fb0556b0af0f217f897d5c | |
| parent | 363b785f3805a2632eb09a8b430842461c21a640 (diff) | |
perf machine: Factor machine__find_thread to take tid argument
Forcing the code to always search thread by pid/tid pair.
The PID value will be needed in future to determine the process thread
leader for map groups sharing.
Signed-off-by: Jiri Olsa <jolsa@redhat.com>
Acked-by: Adrian Hunter <adrian.hunter@intel.com>
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1394805606-25883-3-git-send-email-jolsa@redhat.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
| -rw-r--r-- | tools/perf/tests/dwarf-unwind.c | 2 | ||||
| -rw-r--r-- | tools/perf/util/machine.c | 13 | ||||
| -rw-r--r-- | tools/perf/util/machine.h | 3 |
3 files changed, 12 insertions, 6 deletions
diff --git a/tools/perf/tests/dwarf-unwind.c b/tools/perf/tests/dwarf-unwind.c index f16ea2808a75..c059ee81c038 100644 --- a/tools/perf/tests/dwarf-unwind.c +++ b/tools/perf/tests/dwarf-unwind.c | |||
| @@ -128,7 +128,7 @@ int test__dwarf_unwind(void) | |||
| 128 | if (verbose > 1) | 128 | if (verbose > 1) |
| 129 | machine__fprintf(machine, stderr); | 129 | machine__fprintf(machine, stderr); |
| 130 | 130 | ||
| 131 | thread = machine__find_thread(machine, getpid()); | 131 | thread = machine__find_thread(machine, getpid(), getpid()); |
| 132 | if (!thread) { | 132 | if (!thread) { |
| 133 | pr_err("Could not get thread\n"); | 133 | pr_err("Could not get thread\n"); |
| 134 | goto out; | 134 | goto out; |
diff --git a/tools/perf/util/machine.c b/tools/perf/util/machine.c index a6799538069c..5cecd98c1bc0 100644 --- a/tools/perf/util/machine.c +++ b/tools/perf/util/machine.c | |||
| @@ -327,9 +327,10 @@ struct thread *machine__findnew_thread(struct machine *machine, pid_t pid, | |||
| 327 | return __machine__findnew_thread(machine, pid, tid, true); | 327 | return __machine__findnew_thread(machine, pid, tid, true); |
| 328 | } | 328 | } |
| 329 | 329 | ||
| 330 | struct thread *machine__find_thread(struct machine *machine, pid_t tid) | 330 | struct thread *machine__find_thread(struct machine *machine, pid_t pid, |
| 331 | pid_t tid) | ||
| 331 | { | 332 | { |
| 332 | return __machine__findnew_thread(machine, 0, tid, false); | 333 | return __machine__findnew_thread(machine, pid, tid, false); |
| 333 | } | 334 | } |
| 334 | 335 | ||
| 335 | int machine__process_comm_event(struct machine *machine, union perf_event *event, | 336 | int machine__process_comm_event(struct machine *machine, union perf_event *event, |
| @@ -1114,7 +1115,9 @@ static void machine__remove_thread(struct machine *machine, struct thread *th) | |||
| 1114 | int machine__process_fork_event(struct machine *machine, union perf_event *event, | 1115 | int machine__process_fork_event(struct machine *machine, union perf_event *event, |
| 1115 | struct perf_sample *sample) | 1116 | struct perf_sample *sample) |
| 1116 | { | 1117 | { |
| 1117 | struct thread *thread = machine__find_thread(machine, event->fork.tid); | 1118 | struct thread *thread = machine__find_thread(machine, |
| 1119 | event->fork.pid, | ||
| 1120 | event->fork.tid); | ||
| 1118 | struct thread *parent = machine__findnew_thread(machine, | 1121 | struct thread *parent = machine__findnew_thread(machine, |
| 1119 | event->fork.ppid, | 1122 | event->fork.ppid, |
| 1120 | event->fork.ptid); | 1123 | event->fork.ptid); |
| @@ -1140,7 +1143,9 @@ int machine__process_fork_event(struct machine *machine, union perf_event *event | |||
| 1140 | int machine__process_exit_event(struct machine *machine, union perf_event *event, | 1143 | int machine__process_exit_event(struct machine *machine, union perf_event *event, |
| 1141 | struct perf_sample *sample __maybe_unused) | 1144 | struct perf_sample *sample __maybe_unused) |
| 1142 | { | 1145 | { |
| 1143 | struct thread *thread = machine__find_thread(machine, event->fork.tid); | 1146 | struct thread *thread = machine__find_thread(machine, |
| 1147 | event->fork.pid, | ||
| 1148 | event->fork.tid); | ||
| 1144 | 1149 | ||
| 1145 | if (dump_trace) | 1150 | if (dump_trace) |
| 1146 | perf_event__fprintf_task(event, stdout); | 1151 | perf_event__fprintf_task(event, stdout); |
diff --git a/tools/perf/util/machine.h b/tools/perf/util/machine.h index 2e6c248c870f..c8c74a119398 100644 --- a/tools/perf/util/machine.h +++ b/tools/perf/util/machine.h | |||
| @@ -41,7 +41,8 @@ struct map *machine__kernel_map(struct machine *machine, enum map_type type) | |||
| 41 | return machine->vmlinux_maps[type]; | 41 | return machine->vmlinux_maps[type]; |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | struct thread *machine__find_thread(struct machine *machine, pid_t tid); | 44 | struct thread *machine__find_thread(struct machine *machine, pid_t pid, |
| 45 | pid_t tid); | ||
| 45 | 46 | ||
| 46 | int machine__process_comm_event(struct machine *machine, union perf_event *event, | 47 | int machine__process_comm_event(struct machine *machine, union perf_event *event, |
| 47 | struct perf_sample *sample); | 48 | struct perf_sample *sample); |
