1 #ifndef __PERF_THREAD_H
2 #define __PERF_THREAD_H
4 #include <linux/rbtree.h>
9 struct rb_node rb_node;
10 struct rb_root maps[MAP__NR_TYPES];
11 struct list_head removed_maps[MAP__NR_TYPES];
19 void thread__init(struct thread *self, pid_t pid);
20 int thread__set_comm(struct thread *self, const char *comm);
21 int thread__comm_len(struct thread *self);
22 struct thread *threads__findnew(pid_t pid);
23 struct thread *register_idle_thread(void);
24 void thread__insert_map(struct thread *self, struct map *map);
25 int thread__fork(struct thread *self, struct thread *parent);
26 size_t thread__fprintf_maps(struct thread *self, FILE *fp);
27 size_t threads__fprintf(FILE *fp);
29 void maps__insert(struct rb_root *maps, struct map *map);
30 struct map *maps__find(struct rb_root *maps, u64 addr);
32 static inline struct map *thread__find_map(struct thread *self,
33 enum map_type type, u64 addr)
35 return self ? maps__find(&self->maps[type], addr) : NULL;
38 static inline void __thread__insert_map(struct thread *self, struct map *map)
40 maps__insert(&self->maps[map->type], map);
43 void thread__find_addr_location(struct thread *self, u8 cpumode,
44 enum map_type type, u64 addr,
45 struct addr_location *al,
46 symbol_filter_t filter);
47 struct symbol *thread__find_symbol(struct thread *self,
48 enum map_type type, u64 addr,
49 symbol_filter_t filter);
51 static inline struct symbol *
52 thread__find_function(struct thread *self, u64 addr, symbol_filter_t filter)
54 return thread__find_symbol(self, MAP__FUNCTION, addr, filter);
56 #endif /* __PERF_THREAD_H */