All of lore.kernel.org
 help / color / mirror / Atom feed
* [tip:perf/core] perf trace: Read thread's COMM from /proc when not set
@ 2016-04-27 15:37 tip-bot for Arnaldo Carvalho de Melo
  0 siblings, 0 replies; only message in thread
From: tip-bot for Arnaldo Carvalho de Melo @ 2016-04-27 15:37 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: adrian.hunter, tglx, bp, namhyung, acme, wangnan0, dsahern,
	milian.wolff, hpa, linux-kernel, mingo, jolsa

Commit-ID:  073e5fca53d30ffe9e2fc637a001c78b2cdca7dd
Gitweb:     http://git.kernel.org/tip/073e5fca53d30ffe9e2fc637a001c78b2cdca7dd
Author:     Arnaldo Carvalho de Melo <acme@redhat.com>
AuthorDate: Tue, 26 Apr 2016 12:33:46 -0300
Committer:  Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 26 Apr 2016 13:15:00 -0300

perf trace: Read thread's COMM from /proc when not set

We get notifications for threads that gets created while we're tracing,
but for preexisting threads we may end not having synthesized them, like
when tracing a 'perf trace' session that will use '--pid' to trace some
other thread.

And besides we should probably stop synthesizing those records and
instead read thread information in a lazy way, i.e. just when we need,
like done in this patch:

Now the 'pid_t' argument in 'perf_event_open' gets translated to a COMM:

  # perf trace -e perf_event_open perf stat -e cycles -p 31601
     0.027 ( 0.027 ms): perf/23393 perf_event_open(attr_uptr: 0x2fdd0d8, pid: 31601 (abrt-dump-journ), cpu: -1, group_fd: -1, flags: FD_CLOEXEC)
                                                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= 3
^C

And in other syscalls containing pid_t without thread->comm_set at the
time of the formatting.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: http://lkml.kernel.org/n/tip-ioeps6dlwst17d6oozc9shtk@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
 tools/perf/trace/beauty/pid.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/tools/perf/trace/beauty/pid.c b/tools/perf/trace/beauty/pid.c
index 111ae08..07486ea 100644
--- a/tools/perf/trace/beauty/pid.c
+++ b/tools/perf/trace/beauty/pid.c
@@ -3,9 +3,12 @@ static size_t syscall_arg__scnprintf_pid(char *bf, size_t size, struct syscall_a
 	int pid = arg->val;
 	struct trace *trace = arg->trace;
 	size_t printed = scnprintf(bf, size, "%d", pid);
-	struct thread *thread = machine__find_thread(trace->host, pid, pid);
+	struct thread *thread = machine__findnew_thread(trace->host, pid, pid);
 
 	if (thread != NULL) {
+		if (!thread->comm_set)
+			thread__set_comm_from_proc(thread);
+
 		if (thread->comm_set)
 			printed += scnprintf(bf + printed, size - printed,
 					     " (%s)", thread__comm_str(thread));

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2016-04-27 15:38 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-04-27 15:37 [tip:perf/core] perf trace: Read thread's COMM from /proc when not set tip-bot for Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.