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; | |
edb7c60e ACM |
28 | extern const char *sort_order; |
29 | extern const char default_parent_pattern[]; | |
30 | extern const char *parent_pattern; | |
31 | extern const char default_sort_order[]; | |
dd68ada2 JK |
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; | |
a4fb581b | 39 | extern enum sort_type sort__first_dimension; |
dd68ada2 JK |
40 | |
41 | struct hist_entry { | |
42 | struct rb_node rb_node; | |
c82ee828 ACM |
43 | u64 period; |
44 | u64 period_sys; | |
45 | u64 period_us; | |
46 | u64 period_guest_sys; | |
47 | u64 period_guest_us; | |
59fd5306 | 48 | struct map_symbol ms; |
a5e29aca | 49 | struct thread *thread; |
dd68ada2 | 50 | u64 ip; |
f60f3593 | 51 | s32 cpu; |
c82ee828 | 52 | u32 nr_events; |
dd68ada2 | 53 | char level; |
a5e29aca | 54 | u8 filtered; |
83753190 | 55 | struct symbol *parent; |
86a9eee0 ACM |
56 | union { |
57 | unsigned long position; | |
58 | struct hist_entry *pair; | |
59 | struct rb_root sorted_chain; | |
60 | }; | |
b9fb9304 | 61 | struct callchain_node callchain[0]; |
dd68ada2 JK |
62 | }; |
63 | ||
a4fb581b FW |
64 | enum sort_type { |
65 | SORT_PID, | |
66 | SORT_COMM, | |
67 | SORT_DSO, | |
68 | SORT_SYM, | |
f60f3593 AS |
69 | SORT_PARENT, |
70 | SORT_CPU, | |
a4fb581b FW |
71 | }; |
72 | ||
dd68ada2 JK |
73 | /* |
74 | * configurable sorting bits | |
75 | */ | |
76 | ||
77 | struct sort_entry { | |
78 | struct list_head list; | |
79 | ||
fcd14984 | 80 | const char *se_header; |
dd68ada2 | 81 | |
fcd14984 FW |
82 | int64_t (*se_cmp)(struct hist_entry *, struct hist_entry *); |
83 | int64_t (*se_collapse)(struct hist_entry *, struct hist_entry *); | |
84 | int (*se_snprintf)(struct hist_entry *self, char *bf, size_t size, | |
85 | unsigned int width); | |
8a6c5b26 | 86 | u8 se_width_idx; |
dd68ada2 JK |
87 | bool elide; |
88 | }; | |
89 | ||
90 | extern struct sort_entry sort_thread; | |
91 | extern struct list_head hist_entry__sort_list; | |
92 | ||
c8829c7a ACM |
93 | void setup_sorting(const char * const usagestr[], const struct option *opts); |
94 | ||
dd68ada2 JK |
95 | extern size_t sort__thread_print(FILE *, struct hist_entry *, unsigned int); |
96 | extern size_t sort__comm_print(FILE *, struct hist_entry *, unsigned int); | |
97 | extern size_t sort__dso_print(FILE *, struct hist_entry *, unsigned int); | |
98 | extern size_t sort__sym_print(FILE *, struct hist_entry *, unsigned int __used); | |
99 | extern int64_t cmp_null(void *, void *); | |
100 | extern int64_t sort__thread_cmp(struct hist_entry *, struct hist_entry *); | |
101 | extern int64_t sort__comm_cmp(struct hist_entry *, struct hist_entry *); | |
102 | extern int64_t sort__comm_collapse(struct hist_entry *, struct hist_entry *); | |
103 | extern int64_t sort__dso_cmp(struct hist_entry *, struct hist_entry *); | |
104 | extern int64_t sort__sym_cmp(struct hist_entry *, struct hist_entry *); | |
105 | extern int64_t sort__parent_cmp(struct hist_entry *, struct hist_entry *); | |
f60f3593 | 106 | int64_t sort__cpu_cmp(struct hist_entry *left, struct hist_entry *right); |
dd68ada2 JK |
107 | extern size_t sort__parent_print(FILE *, struct hist_entry *, unsigned int); |
108 | extern int sort_dimension__add(const char *); | |
c351c281 ACM |
109 | void sort_entry__setup_elide(struct sort_entry *self, struct strlist *list, |
110 | const char *list_name, FILE *fp); | |
dd68ada2 JK |
111 | |
112 | #endif /* __PERF_SORT_H */ |