156 lines · c
1/* SPDX-License-Identifier: GPL-2.0 */2#ifndef __PERF_SORT_H3#define __PERF_SORT_H4#include <regex.h>5#include <stdbool.h>6#include "hist.h"7 8struct option;9 10extern regex_t parent_regex;11extern const char *sort_order;12extern const char *field_order;13extern const char default_parent_pattern[];14extern const char *parent_pattern;15extern const char *default_sort_order;16extern regex_t ignore_callees_regex;17extern int have_ignore_callees;18extern enum sort_mode sort__mode;19extern struct sort_entry sort_comm;20extern struct sort_entry sort_dso;21extern struct sort_entry sort_sym;22extern struct sort_entry sort_parent;23extern struct sort_entry sort_dso_from;24extern struct sort_entry sort_dso_to;25extern struct sort_entry sort_sym_from;26extern struct sort_entry sort_sym_to;27extern struct sort_entry sort_srcline;28extern struct sort_entry sort_type;29extern const char default_mem_sort_order[];30extern bool chk_double_cl;31 32enum sort_mode {33 SORT_MODE__NORMAL,34 SORT_MODE__BRANCH,35 SORT_MODE__MEMORY,36 SORT_MODE__TOP,37 SORT_MODE__DIFF,38 SORT_MODE__TRACEPOINT,39};40 41enum sort_type {42 /* common sort keys */43 SORT_PID,44 SORT_COMM,45 SORT_DSO,46 SORT_SYM,47 SORT_PARENT,48 SORT_CPU,49 SORT_SOCKET,50 SORT_SRCLINE,51 SORT_SRCFILE,52 SORT_LOCAL_WEIGHT,53 SORT_GLOBAL_WEIGHT,54 SORT_TRANSACTION,55 SORT_TRACE,56 SORT_SYM_SIZE,57 SORT_DSO_SIZE,58 SORT_CGROUP,59 SORT_CGROUP_ID,60 SORT_SYM_IPC_NULL,61 SORT_TIME,62 SORT_CODE_PAGE_SIZE,63 SORT_LOCAL_INS_LAT,64 SORT_GLOBAL_INS_LAT,65 SORT_LOCAL_PIPELINE_STAGE_CYC,66 SORT_GLOBAL_PIPELINE_STAGE_CYC,67 SORT_ADDR,68 SORT_LOCAL_RETIRE_LAT,69 SORT_GLOBAL_RETIRE_LAT,70 SORT_SIMD,71 SORT_ANNOTATE_DATA_TYPE,72 SORT_ANNOTATE_DATA_TYPE_OFFSET,73 SORT_SYM_OFFSET,74 SORT_ANNOTATE_DATA_TYPE_CACHELINE,75 76 /* branch stack specific sort keys */77 __SORT_BRANCH_STACK,78 SORT_DSO_FROM = __SORT_BRANCH_STACK,79 SORT_DSO_TO,80 SORT_SYM_FROM,81 SORT_SYM_TO,82 SORT_MISPREDICT,83 SORT_ABORT,84 SORT_IN_TX,85 SORT_CYCLES,86 SORT_SRCLINE_FROM,87 SORT_SRCLINE_TO,88 SORT_SYM_IPC,89 SORT_ADDR_FROM,90 SORT_ADDR_TO,91 92 /* memory mode specific sort keys */93 __SORT_MEMORY_MODE,94 SORT_MEM_DADDR_SYMBOL = __SORT_MEMORY_MODE,95 SORT_MEM_DADDR_DSO,96 SORT_MEM_LOCKED,97 SORT_MEM_TLB,98 SORT_MEM_LVL,99 SORT_MEM_SNOOP,100 SORT_MEM_DCACHELINE,101 SORT_MEM_IADDR_SYMBOL,102 SORT_MEM_PHYS_DADDR,103 SORT_MEM_DATA_PAGE_SIZE,104 SORT_MEM_BLOCKED,105};106 107/*108 * configurable sorting bits109 */110 111struct sort_entry {112 const char *se_header;113 114 int64_t (*se_cmp)(struct hist_entry *, struct hist_entry *);115 int64_t (*se_collapse)(struct hist_entry *, struct hist_entry *);116 int64_t (*se_sort)(struct hist_entry *, struct hist_entry *);117 int (*se_snprintf)(struct hist_entry *he, char *bf, size_t size,118 unsigned int width);119 int (*se_filter)(struct hist_entry *he, int type, const void *arg);120 void (*se_init)(struct hist_entry *he);121 u8 se_width_idx;122};123 124extern struct sort_entry sort_thread;125 126struct evlist;127struct tep_handle;128int setup_sorting(struct evlist *evlist);129int setup_output_field(void);130void reset_output_field(void);131void sort__setup_elide(FILE *fp);132void perf_hpp__set_elide(int idx, bool elide);133 134char *sort_help(const char *prefix, enum sort_mode mode);135 136int report_parse_ignore_callees_opt(const struct option *opt, const char *arg, int unset);137 138bool is_strict_order(const char *order);139 140int hpp_dimension__add_output(unsigned col);141void reset_dimensions(void);142int sort_dimension__add(struct perf_hpp_list *list, const char *tok,143 struct evlist *evlist,144 int level);145int output_field_add(struct perf_hpp_list *list, const char *tok);146int64_t147sort__iaddr_cmp(struct hist_entry *left, struct hist_entry *right);148int64_t149sort__daddr_cmp(struct hist_entry *left, struct hist_entry *right);150int64_t151sort__dcacheline_cmp(struct hist_entry *left, struct hist_entry *right);152int64_t153_sort__sym_cmp(struct symbol *sym_l, struct symbol *sym_r);154char *hist_entry__srcline(struct hist_entry *he);155#endif /* __PERF_SORT_H */156