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 "comm.h"
|
||||||
#include "unwind.h"
|
#include "unwind.h"
|
||||||
|
|
||||||
|
#include <api/fs/fs.h>
|
||||||
|
|
||||||
int thread__init_map_groups(struct thread *thread, struct machine *machine)
|
int thread__init_map_groups(struct thread *thread, struct machine *machine)
|
||||||
{
|
{
|
||||||
struct thread *leader;
|
struct thread *leader;
|
||||||
|
@ -153,6 +155,23 @@ int __thread__set_comm(struct thread *thread, const char *str, u64 timestamp,
|
||||||
return 0;
|
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 char *thread__comm_str(const struct thread *thread)
|
||||||
{
|
{
|
||||||
const struct comm *comm = thread__comm(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);
|
return __thread__set_comm(thread, comm, timestamp, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int thread__set_comm_from_proc(struct thread *thread);
|
||||||
|
|
||||||
int thread__comm_len(struct thread *thread);
|
int thread__comm_len(struct thread *thread);
|
||||||
struct comm *thread__comm(const struct thread *thread);
|
struct comm *thread__comm(const struct thread *thread);
|
||||||
struct comm *thread__exec_comm(const struct thread *thread);
|
struct comm *thread__exec_comm(const struct thread *thread);
|
||||||
|
|
Loading…
Reference in New Issue