linux/tools/perf/util/thread.h
<<
>>
Prefs
   1#ifndef __PERF_THREAD_H
   2#define __PERF_THREAD_H
   3
   4#include <linux/rbtree.h>
   5#include <linux/list.h>
   6#include <unistd.h>
   7#include <sys/types.h>
   8#include "symbol.h"
   9#include <strlist.h>
  10
  11struct thread {
  12        union {
  13                struct rb_node   rb_node;
  14                struct list_head node;
  15        };
  16        struct map_groups       *mg;
  17        pid_t                   pid_; /* Not all tools update this */
  18        pid_t                   tid;
  19        pid_t                   ppid;
  20        int                     cpu;
  21        char                    shortname[3];
  22        bool                    comm_set;
  23        bool                    dead; /* if set thread has exited */
  24        struct list_head        comm_list;
  25        int                     comm_len;
  26
  27        void                    *priv;
  28};
  29
  30struct machine;
  31struct comm;
  32
  33struct thread *thread__new(pid_t pid, pid_t tid);
  34int thread__init_map_groups(struct thread *thread, struct machine *machine);
  35void thread__delete(struct thread *thread);
  36static inline void thread__exited(struct thread *thread)
  37{
  38        thread->dead = true;
  39}
  40
  41int __thread__set_comm(struct thread *thread, const char *comm, u64 timestamp,
  42                       bool exec);
  43static inline int thread__set_comm(struct thread *thread, const char *comm,
  44                                   u64 timestamp)
  45{
  46        return __thread__set_comm(thread, comm, timestamp, false);
  47}
  48
  49int thread__comm_len(struct thread *thread);
  50struct comm *thread__comm(const struct thread *thread);
  51struct comm *thread__exec_comm(const struct thread *thread);
  52const char *thread__comm_str(const struct thread *thread);
  53void thread__insert_map(struct thread *thread, struct map *map);
  54int thread__fork(struct thread *thread, struct thread *parent, u64 timestamp);
  55size_t thread__fprintf(struct thread *thread, FILE *fp);
  56
  57void thread__find_addr_map(struct thread *thread, struct machine *machine,
  58                           u8 cpumode, enum map_type type, u64 addr,
  59                           struct addr_location *al);
  60
  61void thread__find_addr_location(struct thread *thread, struct machine *machine,
  62                                u8 cpumode, enum map_type type, u64 addr,
  63                                struct addr_location *al);
  64
  65void thread__find_cpumode_addr_location(struct thread *thread,
  66                                        struct machine *machine,
  67                                        enum map_type type, u64 addr,
  68                                        struct addr_location *al);
  69
  70static inline void *thread__priv(struct thread *thread)
  71{
  72        return thread->priv;
  73}
  74
  75static inline void thread__set_priv(struct thread *thread, void *p)
  76{
  77        thread->priv = p;
  78}
  79
  80static inline bool thread__is_filtered(struct thread *thread)
  81{
  82        if (symbol_conf.comm_list &&
  83            !strlist__has_entry(symbol_conf.comm_list, thread__comm_str(thread))) {
  84                return true;
  85        }
  86
  87        return false;
  88}
  89
  90#endif  /* __PERF_THREAD_H */
  91