2 #ifndef __PERF_ANNOTATE_H 3 #define __PERF_ANNOTATE_H 7 #include <linux/types.h> 11 #include <linux/list.h> 12 #include <linux/rbtree.h> 62 #define ANNOTATION__IPC_WIDTH 6 63 #define ANNOTATION__CYCLES_WIDTH 6 64 #define ANNOTATION__MINMAX_CYCLES_WIDTH 19 93 #define ANNOTATION__MIN_OFFSET_LEVEL ANNOTATION__OFFSET_JUMP_TARGETS 112 struct rb_node rb_node;
139 return al ? container_of(al,
struct disasm_line, al) : NULL;
165 int (*set_color)(
void *obj,
int color);
166 void (*set_percent_color)(
void *obj,
double percent,
bool current);
167 int (*set_jumps_percent_color)(
void *obj,
int nr,
bool current);
168 void (*printf)(
void *obj,
const char *
fmt, ...);
169 void (*write_graph)(
void *obj,
int graph);
177 char *bf,
size_t size,
182 char *bf,
size_t size,
314 struct arch **parch);
318 struct arch **parch);
338 int errnum,
char *buf,
size_t buflen);
358 #ifdef HAVE_SLANG_SUPPORT 365 struct map *map __maybe_unused,
static int annotation__pcnt_width(struct annotation *notes)
void symbol__calc_percent(struct symbol *sym, struct perf_evsel *evsel)
void symbol__annotate_decay_histogram(struct symbol *sym, int evidx)
struct annotation_options annotation__default_options
size_t disasm__fprintf(struct list_head *head, FILE *fp)
static int annotation__scnprintf_samples_period(struct annotation *notes, char *bf, size_t size, struct perf_evsel *evsel)
double annotation_line__max_percent(struct annotation_line *al, struct annotation *notes)
void annotation__mark_jump_targets(struct annotation *notes, struct symbol *sym)
struct cyc_hist * cycles_hist
int addr_map_symbol__account_cycles(struct addr_map_symbol *ams, struct addr_map_symbol *start, unsigned cycles)
static int annotation__cycles_width(struct annotation *notes)
int disasm_line__scnprintf(struct disasm_line *dl, char *bf, size_t size, bool raw)
static int symbol__tui_annotate(struct symbol *sym __maybe_unused, struct map *map __maybe_unused, struct perf_evsel *evsel __maybe_unused, struct hist_browser_timer *hbt __maybe_unused, struct annotation_options *opts __maybe_unused)
int ins__scnprintf(struct ins *ins, char *bf, size_t size, struct ins_operands *ops)
#define ANNOTATION__CYCLES_WIDTH
bool ins__is_fused(struct arch *arch, const char *ins1, const char *ins2)
struct annotated_source * symbol__hists(struct symbol *sym, int nr_hists)
void symbol__annotate_zero_histograms(struct symbol *sym)
struct ins_operands::@36::@39 locked
int addr_map_symbol__inc_samples(struct addr_map_symbol *ams, struct perf_sample *sample, struct perf_evsel *evsel)
#define ANNOTATION__IPC_WIDTH
void annotation_config__init(void)
static struct sym_hist * annotation__histogram(struct annotation *notes, int idx)
const char * objdump_path
struct annotation_options * options
int symbol__annotate2(struct symbol *sym, struct map *map, struct perf_evsel *evsel, struct annotation_options *options, struct arch **parch)
static bool annotation_line__filter(struct annotation_line *al, struct annotation *notes)
int hist_entry__inc_addr_samples(struct hist_entry *he, struct perf_sample *sample, struct perf_evsel *evsel, u64 addr)
static struct disasm_line * disasm_line(struct annotation_line *al)
struct ins_operands::@35 target
struct ins_operands * ops
void annotation__update_column_widths(struct annotation *notes)
int __annotation__scnprintf_samples_period(struct annotation *notes, char *bf, size_t size, struct perf_evsel *evsel, bool show_freq)
int symbol__annotate_fprintf2(struct symbol *sym, FILE *fp)
static struct annotation * symbol__annotation(struct symbol *sym)
int map_symbol__annotation_dump(struct map_symbol *ms, struct perf_evsel *evsel)
int symbol__tty_annotate(struct symbol *sym, struct map *map, struct perf_evsel *evsel, struct annotation_options *opts)
const char * disassembler_style
static int raw(yyscan_t scanner)
bool ins__is_ret(const struct ins *ins)
void disasm_line__free(struct disasm_line *dl)
bool disasm_line__is_valid_local_jump(struct disasm_line *dl, struct symbol *sym)
void annotation__compute_ipc(struct annotation *notes, size_t size)
static struct sym_hist * annotated_source__histogram(struct annotated_source *src, int idx)
int symbol__annotate_printf(struct symbol *sym, struct map *map, struct perf_evsel *evsel, struct annotation_options *options)
struct annotation_line * annotation_line__next(struct annotation_line *pos, struct list_head *head)
bool ins__is_jump(const struct ins *ins)
struct annotated_source * src
void annotation__set_offsets(struct annotation *notes, s64 size)
static int sym(yyscan_t scanner, int type, int config)
bool ui__has_annotation(void)
struct sym_hist * histograms
bool ins__is_lock(const struct ins *ins)
static double percent(int st, int tot)
int symbol__tty_annotate2(struct symbol *sym, struct map *map, struct perf_evsel *evsel, struct annotation_options *opts)
#define ANNOTATION__MINMAX_CYCLES_WIDTH
void symbol__annotate_zero_histogram(struct symbol *sym, int evidx)
bool ins__is_call(const struct ins *ins)
int symbol__strerror_disassemble(struct symbol *sym, struct map *map, int errnum, char *buf, size_t buflen)
void annotation__init_column_widths(struct annotation *notes, struct symbol *sym)
void annotation_line__write(struct annotation_line *al, struct annotation *notes, struct annotation_write_ops *ops)
struct annotation_line ** offsets
void annotated_source__purge(struct annotated_source *as)
int symbol__annotate(struct symbol *sym, struct map *map, struct perf_evsel *evsel, size_t privsize, struct annotation_options *options, struct arch **parch)
static bool disasm_line__has_local_offset(const struct disasm_line *dl)