diff options
Diffstat (limited to 'tools/perf/util/thread.h')
| -rw-r--r-- | tools/perf/util/thread.h | 50 |
1 files changed, 42 insertions, 8 deletions
diff --git a/tools/perf/util/thread.h b/tools/perf/util/thread.h index 32aea3c1c2ad..686d6e914d9e 100644 --- a/tools/perf/util/thread.h +++ b/tools/perf/util/thread.h | |||
| @@ -1,22 +1,56 @@ | |||
| 1 | #ifndef __PERF_THREAD_H | ||
| 2 | #define __PERF_THREAD_H | ||
| 3 | |||
| 1 | #include <linux/rbtree.h> | 4 | #include <linux/rbtree.h> |
| 2 | #include <linux/list.h> | ||
| 3 | #include <unistd.h> | 5 | #include <unistd.h> |
| 4 | #include "symbol.h" | 6 | #include "symbol.h" |
| 5 | 7 | ||
| 6 | struct thread { | 8 | struct thread { |
| 7 | struct rb_node rb_node; | 9 | struct rb_node rb_node; |
| 8 | struct list_head maps; | 10 | struct rb_root maps[MAP__NR_TYPES]; |
| 11 | struct list_head removed_maps[MAP__NR_TYPES]; | ||
| 9 | pid_t pid; | 12 | pid_t pid; |
| 13 | bool use_modules; | ||
| 10 | char shortname[3]; | 14 | char shortname[3]; |
| 11 | char *comm; | 15 | char *comm; |
| 16 | int comm_len; | ||
| 12 | }; | 17 | }; |
| 13 | 18 | ||
| 19 | void thread__init(struct thread *self, pid_t pid); | ||
| 14 | int thread__set_comm(struct thread *self, const char *comm); | 20 | int thread__set_comm(struct thread *self, const char *comm); |
| 15 | struct thread * | 21 | int thread__comm_len(struct thread *self); |
| 16 | threads__findnew(pid_t pid, struct rb_root *threads, struct thread **last_match); | 22 | struct thread *threads__findnew(pid_t pid); |
| 17 | struct thread * | 23 | struct thread *register_idle_thread(void); |
| 18 | register_idle_thread(struct rb_root *threads, struct thread **last_match); | ||
| 19 | void thread__insert_map(struct thread *self, struct map *map); | 24 | void thread__insert_map(struct thread *self, struct map *map); |
| 20 | int thread__fork(struct thread *self, struct thread *parent); | 25 | int thread__fork(struct thread *self, struct thread *parent); |
| 21 | struct map *thread__find_map(struct thread *self, u64 ip); | 26 | size_t thread__fprintf_maps(struct thread *self, FILE *fp); |
| 22 | size_t threads__fprintf(FILE *fp, struct rb_root *threads); | 27 | size_t threads__fprintf(FILE *fp); |
| 28 | |||
| 29 | void maps__insert(struct rb_root *maps, struct map *map); | ||
| 30 | struct map *maps__find(struct rb_root *maps, u64 addr); | ||
| 31 | |||
| 32 | static inline struct map *thread__find_map(struct thread *self, | ||
| 33 | enum map_type type, u64 addr) | ||
| 34 | { | ||
| 35 | return self ? maps__find(&self->maps[type], addr) : NULL; | ||
| 36 | } | ||
| 37 | |||
| 38 | static inline void __thread__insert_map(struct thread *self, struct map *map) | ||
| 39 | { | ||
| 40 | maps__insert(&self->maps[map->type], map); | ||
| 41 | } | ||
| 42 | |||
| 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); | ||
| 50 | |||
| 51 | static inline struct symbol * | ||
| 52 | thread__find_function(struct thread *self, u64 addr, symbol_filter_t filter) | ||
| 53 | { | ||
| 54 | return thread__find_symbol(self, MAP__FUNCTION, addr, filter); | ||
| 55 | } | ||
| 56 | #endif /* __PERF_THREAD_H */ | ||
