perf thread: Introduce method to set comm from /proc/pid/self
Will be used for lazy comm loading in 'perf trace'. 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-7ogbkuoka1y2qsmcckqxvl5m@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
4bd112df3e
commit
2f3027ac28
@ -10,6 +10,8 @@
|
||||
#include "comm.h"
|
||||
#include "unwind.h"
|
||||
|
||||
#include <api/fs/fs.h>
|
||||
|
||||
int thread__init_map_groups(struct thread *thread, struct machine *machine)
|
||||
{
|
||||
struct thread *leader;
|
||||
@ -153,6 +155,23 @@ int __thread__set_comm(struct thread *thread, const char *str, u64 timestamp,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int thread__set_comm_from_proc(struct thread *thread)
|
||||
{
|
||||
char path[64];
|
||||
char *comm = NULL;
|
||||
size_t sz;
|
||||
int err = -1;
|
||||
|
||||
if (!(snprintf(path, sizeof(path), "%d/task/%d/comm",
|
||||
thread->pid_, thread->tid) >= (int)sizeof(path)) &&
|
||||
procfs__read_str(path, &comm, &sz) == 0) {
|
||||
comm[sz - 1] = '\0';
|
||||
err = thread__set_comm(thread, comm, 0);
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
const char *thread__comm_str(const struct thread *thread)
|
||||
{
|
||||
const struct comm *comm = thread__comm(thread);
|
||||
|
@ -71,6 +71,8 @@ static inline int thread__set_comm(struct thread *thread, const char *comm,
|
||||
return __thread__set_comm(thread, comm, timestamp, false);
|
||||
}
|
||||
|
||||
int thread__set_comm_from_proc(struct thread *thread);
|
||||
|
||||
int thread__comm_len(struct thread *thread);
|
||||
struct comm *thread__comm(const struct thread *thread);
|
||||
struct comm *thread__exec_comm(const struct thread *thread);
|
||||
|
Loading…
Reference in New Issue
Block a user