Commit | Line | Data |
---|---|---|
dd68ada2 JK |
1 | #ifndef __PERF_SORT_H |
2 | #define __PERF_SORT_H | |
3 | #include "../builtin.h" | |
4 | ||
5 | #include "util.h" | |
6 | ||
7 | #include "color.h" | |
8 | #include <linux/list.h> | |
9 | #include "cache.h" | |
10 | #include <linux/rbtree.h> | |
11 | #include "symbol.h" | |
12 | #include "string.h" | |
13 | #include "callchain.h" | |
14 | #include "strlist.h" | |
15 | #include "values.h" | |
16 | ||
17 | #include "../perf.h" | |
18 | #include "debug.h" | |
19 | #include "header.h" | |
20 | ||
21 | #include "parse-options.h" | |
22 | #include "parse-events.h" | |
23 | ||
24 | #include "thread.h" | |
25 | #include "sort.h" | |
26 | ||
27 | extern regex_t parent_regex; | |
28 | extern char *sort_order; | |
29 | extern char default_parent_pattern[]; | |
30 | extern char *parent_pattern; | |
31 | extern char default_sort_order[]; | |
32 | extern int sort__need_collapse; | |
33 | extern int sort__has_parent; | |
34 | extern char *field_sep; | |
35 | extern struct sort_entry sort_comm; | |
36 | extern struct sort_entry sort_dso; | |
37 | extern struct sort_entry sort_sym; | |
38 | extern struct sort_entry sort_parent; | |
39 | extern unsigned int dsos__col_width; | |
40 | extern unsigned int comms__col_width; | |
41 | extern unsigned int threads__col_width; | |
42 | ||
43 | struct hist_entry { | |
44 | struct rb_node rb_node; | |
45 | ||
46 | struct thread *thread; | |
47 | struct map *map; | |
48 | struct dso *dso; | |
49 | struct symbol *sym; | |
50 | struct symbol *parent; | |
51 | u64 ip; | |
52 | char level; | |
53 | struct callchain_node callchain; | |
54 | struct rb_root sorted_chain; | |
55 | ||
56 | u64 count; | |
57 | }; | |
58 | ||
59 | /* | |
60 | * configurable sorting bits | |
61 | */ | |
62 | ||
63 | struct sort_entry { | |
64 | struct list_head list; | |
65 | ||
66 | const char *header; | |
67 | ||
68 | int64_t (*cmp)(struct hist_entry *, struct hist_entry *); | |
69 | int64_t (*collapse)(struct hist_entry *, struct hist_entry *); | |
70 | size_t (*print)(FILE *fp, struct hist_entry *, unsigned int width); | |
71 | unsigned int *width; | |
72 | bool elide; | |
73 | }; | |
74 | ||
75 | extern struct sort_entry sort_thread; | |
76 | extern struct list_head hist_entry__sort_list; | |
77 | ||
78 | extern int repsep_fprintf(FILE *fp, const char *fmt, ...); | |
79 | extern size_t sort__thread_print(FILE *, struct hist_entry *, unsigned int); | |
80 | extern size_t sort__comm_print(FILE *, struct hist_entry *, unsigned int); | |
81 | extern size_t sort__dso_print(FILE *, struct hist_entry *, unsigned int); | |
82 | extern size_t sort__sym_print(FILE *, struct hist_entry *, unsigned int __used); | |
83 | extern int64_t cmp_null(void *, void *); | |
84 | extern int64_t sort__thread_cmp(struct hist_entry *, struct hist_entry *); | |
85 | extern int64_t sort__comm_cmp(struct hist_entry *, struct hist_entry *); | |
86 | extern int64_t sort__comm_collapse(struct hist_entry *, struct hist_entry *); | |
87 | extern int64_t sort__dso_cmp(struct hist_entry *, struct hist_entry *); | |
88 | extern int64_t sort__sym_cmp(struct hist_entry *, struct hist_entry *); | |
89 | extern int64_t sort__parent_cmp(struct hist_entry *, struct hist_entry *); | |
90 | extern size_t sort__parent_print(FILE *, struct hist_entry *, unsigned int); | |
91 | extern int sort_dimension__add(const char *); | |
92 | ||
93 | #endif /* __PERF_SORT_H */ |