Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13ce34df authored by Namhyung Kim's avatar Namhyung Kim Committed by Jiri Olsa
Browse files

perf tools: Use tid for finding thread



I believe that passing pid (instead of tid) as the 3rd arg of the
machine__find*_thread() was to find a main thread so that it can
search proper map group for symbols.  However with the map sharing
patch applied, it now can do it in any thread.

It fixes a bug when each thread has different name, it only reports a
main thread for samples in other threads.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Acked-by: default avatarDavid Ahern <dsahern@gmail.com>
Acked-by: default avatarStephane Eranian <eranian@google.com>
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/1399856202-26221-1-git-send-email-namhyung@kernel.org


Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
parent bac1e4d1
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -209,7 +209,7 @@ static int perf_event__inject_buildid(struct perf_tool *tool,


	cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;
	cpumode = event->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;


	thread = machine__findnew_thread(machine, sample->pid, sample->pid);
	thread = machine__findnew_thread(machine, sample->pid, sample->tid);
	if (thread == NULL) {
	if (thread == NULL) {
		pr_err("problem processing %d event, skipping it.\n",
		pr_err("problem processing %d event, skipping it.\n",
		       event->header.type);
		       event->header.type);
+1 −1
Original line number Original line Diff line number Diff line
@@ -235,7 +235,7 @@ static int process_sample_event(struct perf_tool *tool __maybe_unused,
				struct machine *machine)
				struct machine *machine)
{
{
	struct thread *thread = machine__findnew_thread(machine, sample->pid,
	struct thread *thread = machine__findnew_thread(machine, sample->pid,
							sample->pid);
							sample->tid);


	if (thread == NULL) {
	if (thread == NULL) {
		pr_debug("problem processing %d event, skipping it.\n",
		pr_debug("problem processing %d event, skipping it.\n",
+1 −1
Original line number Original line Diff line number Diff line
@@ -256,7 +256,7 @@ static int process_sample_event(struct machine *machine,
		return -1;
		return -1;
	}
	}


	thread = machine__findnew_thread(machine, sample.pid, sample.pid);
	thread = machine__findnew_thread(machine, sample.pid, sample.tid);
	if (!thread) {
	if (!thread) {
		pr_debug("machine__findnew_thread failed\n");
		pr_debug("machine__findnew_thread failed\n");
		return -1;
		return -1;
+1 −0
Original line number Original line Diff line number Diff line
@@ -69,6 +69,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
			evsel->hists.symbol_filter_str = NULL;
			evsel->hists.symbol_filter_str = NULL;


			sample.pid = fake_samples[i].pid;
			sample.pid = fake_samples[i].pid;
			sample.tid = fake_samples[i].pid;
			sample.ip = fake_samples[i].ip;
			sample.ip = fake_samples[i].ip;


			if (perf_event__preprocess_sample(&event, machine, &al,
			if (perf_event__preprocess_sample(&event, machine, &al,
+2 −0
Original line number Original line Diff line number Diff line
@@ -81,6 +81,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
			};
			};


			sample.pid = fake_common_samples[k].pid;
			sample.pid = fake_common_samples[k].pid;
			sample.tid = fake_common_samples[k].pid;
			sample.ip = fake_common_samples[k].ip;
			sample.ip = fake_common_samples[k].ip;
			if (perf_event__preprocess_sample(&event, machine, &al,
			if (perf_event__preprocess_sample(&event, machine, &al,
							  &sample) < 0)
							  &sample) < 0)
@@ -104,6 +105,7 @@ static int add_hist_entries(struct perf_evlist *evlist, struct machine *machine)
			};
			};


			sample.pid = fake_samples[i][k].pid;
			sample.pid = fake_samples[i][k].pid;
			sample.tid = fake_samples[i][k].pid;
			sample.ip = fake_samples[i][k].ip;
			sample.ip = fake_samples[i][k].ip;
			if (perf_event__preprocess_sample(&event, machine, &al,
			if (perf_event__preprocess_sample(&event, machine, &al,
							  &sample) < 0)
							  &sample) < 0)
Loading