mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 23:56:45 +07:00
b9c5143a01
As the thread comm is going to be implemented by way of a more complicated data structure than just a pointer to a string from the thread struct, convert the readers of comm to use an accessor instead of accessing it directly. The accessor will be later overriden to support an enhanced comm implementation. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Tested-by: Jiri Olsa <jolsa@redhat.com> Cc: Jiri Olsa <jolsa@redhat.com> Cc: David Ahern <dsahern@gmail.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-wr683zwy94hmj4ibogmnv9ce@git.kernel.org [ Rename thread__comm_curr() to thread__comm_str() ] Signed-off-by: Namhyung Kim <namhyung@kernel.org> [ Fixed up some minor const pointer issues ] Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
67 lines
1.6 KiB
C
67 lines
1.6 KiB
C
#ifndef __PERF_THREAD_H
|
|
#define __PERF_THREAD_H
|
|
|
|
#include <linux/rbtree.h>
|
|
#include <unistd.h>
|
|
#include <sys/types.h>
|
|
#include "symbol.h"
|
|
|
|
struct thread {
|
|
union {
|
|
struct rb_node rb_node;
|
|
struct list_head node;
|
|
};
|
|
struct map_groups mg;
|
|
pid_t pid_; /* Not all tools update this */
|
|
pid_t tid;
|
|
pid_t ppid;
|
|
char shortname[3];
|
|
bool comm_set;
|
|
bool dead; /* if set thread has exited */
|
|
char *comm;
|
|
int comm_len;
|
|
|
|
void *priv;
|
|
};
|
|
|
|
struct machine;
|
|
|
|
struct thread *thread__new(pid_t pid, pid_t tid);
|
|
void thread__delete(struct thread *self);
|
|
static inline void thread__exited(struct thread *thread)
|
|
{
|
|
thread->dead = true;
|
|
}
|
|
|
|
int thread__set_comm(struct thread *self, const char *comm);
|
|
int thread__comm_len(struct thread *self);
|
|
const char *thread__comm_str(const struct thread *thread);
|
|
void thread__insert_map(struct thread *self, struct map *map);
|
|
int thread__fork(struct thread *self, struct thread *parent);
|
|
size_t thread__fprintf(struct thread *thread, FILE *fp);
|
|
|
|
static inline struct map *thread__find_map(struct thread *self,
|
|
enum map_type type, u64 addr)
|
|
{
|
|
return self ? map_groups__find(&self->mg, type, addr) : NULL;
|
|
}
|
|
|
|
void thread__find_addr_map(struct thread *thread, struct machine *machine,
|
|
u8 cpumode, enum map_type type, u64 addr,
|
|
struct addr_location *al);
|
|
|
|
void thread__find_addr_location(struct thread *thread, struct machine *machine,
|
|
u8 cpumode, enum map_type type, u64 addr,
|
|
struct addr_location *al);
|
|
|
|
static inline void *thread__priv(struct thread *thread)
|
|
{
|
|
return thread->priv;
|
|
}
|
|
|
|
static inline void thread__set_priv(struct thread *thread, void *p)
|
|
{
|
|
thread->priv = p;
|
|
}
|
|
#endif /* __PERF_THREAD_H */
|