1 /* SPDX-License-Identifier: GPL-2.0 */
10 extern regex_t parent_regex
;
11 extern const char *sort_order
;
12 extern const char *field_order
;
13 extern const char default_parent_pattern
[];
14 extern const char *parent_pattern
;
15 extern const char *default_sort_order
;
16 extern regex_t ignore_callees_regex
;
17 extern int have_ignore_callees
;
18 extern enum sort_mode sort__mode
;
19 extern struct sort_entry sort_comm
;
20 extern struct sort_entry sort_dso
;
21 extern struct sort_entry sort_sym
;
22 extern struct sort_entry sort_parent
;
23 extern struct sort_entry sort_dso_from
;
24 extern struct sort_entry sort_dso_to
;
25 extern struct sort_entry sort_sym_from
;
26 extern struct sort_entry sort_sym_to
;
27 extern struct sort_entry sort_srcline
;
28 extern struct sort_entry sort_type
;
29 extern const char default_mem_sort_order
[];
30 extern bool chk_double_cl
;
38 SORT_MODE__TRACEPOINT
,
42 /* common sort keys */
65 SORT_LOCAL_PIPELINE_STAGE_CYC
,
66 SORT_GLOBAL_PIPELINE_STAGE_CYC
,
68 SORT_LOCAL_RETIRE_LAT
,
69 SORT_GLOBAL_RETIRE_LAT
,
71 SORT_ANNOTATE_DATA_TYPE
,
72 SORT_ANNOTATE_DATA_TYPE_OFFSET
,
74 SORT_ANNOTATE_DATA_TYPE_CACHELINE
,
76 /* branch stack specific sort keys */
78 SORT_DSO_FROM
= __SORT_BRANCH_STACK
,
91 SORT_CALLCHAIN_BRANCH_PREDICTED
,
92 SORT_CALLCHAIN_BRANCH_ABORT
,
93 SORT_CALLCHAIN_BRANCH_CYCLES
,
95 /* memory mode specific sort keys */
97 SORT_MEM_DADDR_SYMBOL
= __SORT_MEMORY_MODE
,
104 SORT_MEM_IADDR_SYMBOL
,
106 SORT_MEM_DATA_PAGE_SIZE
,
111 * configurable sorting bits
115 const char *se_header
;
117 int64_t (*se_cmp
)(struct hist_entry
*, struct hist_entry
*);
118 int64_t (*se_collapse
)(struct hist_entry
*, struct hist_entry
*);
119 int64_t (*se_sort
)(struct hist_entry
*, struct hist_entry
*);
120 int (*se_snprintf
)(struct hist_entry
*he
, char *bf
, size_t size
,
122 int (*se_filter
)(struct hist_entry
*he
, int type
, const void *arg
);
123 void (*se_init
)(struct hist_entry
*he
);
127 extern struct sort_entry sort_thread
;
131 int setup_sorting(struct evlist
*evlist
);
132 int setup_output_field(void);
133 void reset_output_field(void);
134 void sort__setup_elide(FILE *fp
);
135 void perf_hpp__set_elide(int idx
, bool elide
);
137 char *sort_help(const char *prefix
, enum sort_mode mode
);
139 int report_parse_ignore_callees_opt(const struct option
*opt
, const char *arg
, int unset
);
141 bool is_strict_order(const char *order
);
143 int hpp_dimension__add_output(unsigned col
);
144 void reset_dimensions(void);
145 int sort_dimension__add(struct perf_hpp_list
*list
, const char *tok
,
146 struct evlist
*evlist
,
148 int output_field_add(struct perf_hpp_list
*list
, const char *tok
);
150 sort__iaddr_cmp(struct hist_entry
*left
, struct hist_entry
*right
);
152 sort__daddr_cmp(struct hist_entry
*left
, struct hist_entry
*right
);
154 sort__dcacheline_cmp(struct hist_entry
*left
, struct hist_entry
*right
);
156 _sort__sym_cmp(struct symbol
*sym_l
, struct symbol
*sym_r
);
157 char *hist_entry__srcline(struct hist_entry
*he
);
158 #endif /* __PERF_SORT_H */