brintos

brintos / linux-shallow public Read only

0
0
Text · 3.8 KiB · 9ff68c6 Raw
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