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);
  42int thread__comm_len(struct thread *thread);
  43struct comm *thread__comm(const struct thread *thread);
  44const char *thread__comm_str(const struct thread *thread);
  45void thread__insert_map(struct thread *thread, struct map *map);
  46int thread__fork(struct thread *thread, struct thread *parent, u64 timestamp);
  47size_t thread__fprintf(struct thread *thread, FILE *fp);
  48
  49void thread__find_addr_map(struct thread *thread, struct machine *machine,
  50                           u8 cpumode, enum map_type type, u64 addr,
  51                           struct addr_location *al);
  52
  53void thread__find_addr_location(struct thread *thread, struct machine *machine,
  54                                u8 cpumode, enum map_type type, u64 addr,
  55                                struct addr_location *al);
  56
  57void thread__find_cpumode_addr_location(struct thread *thread,
  58                                        struct machine *machine,
  59                                        enum map_type type, u64 addr,
  60                                        struct addr_location *al);
  61
  62static inline void *thread__priv(struct thread *thread)
  63{
  64        return thread->priv;
  65}
  66
  67static inline void thread__set_priv(struct thread *thread, void *p)
  68{
  69        thread->priv = p;
  70}
  71
  72static inline bool thread__is_filtered(struct thread *thread)
  73{
  74        if (symbol_conf.comm_list &&
  75            !strlist__has_entry(symbol_conf.comm_list, thread__comm_str(thread))) {
  76                return true;
  77        }
  78
  79        return false;
  80}
  81
  82#endif  /* __PERF_THREAD_H */
  83