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 /tools | |
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>
Diffstat (limited to 'tools')
-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); |