1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #ifndef __PERF_ANNOTATE_H
- #define __PERF_ANNOTATE_H
- #include <stdbool.h>
- #include "types.h"
- #include "symbol.h"
- #include <linux/list.h>
- #include <linux/rbtree.h>
- struct objdump_line {
- struct list_head node;
- s64 offset;
- char *line;
- };
- void objdump_line__free(struct objdump_line *self);
- struct objdump_line *objdump__get_next_ip_line(struct list_head *head,
- struct objdump_line *pos);
- struct sym_hist {
- u64 sum;
- u64 addr[0];
- };
- struct source_line {
- struct rb_node node;
- double percent;
- char *path;
- };
- struct annotation {
- struct sym_hist *histogram;
- struct source_line *src_line;
- };
- struct sannotation {
- struct annotation annotation;
- struct symbol symbol;
- };
- static inline struct annotation *symbol__annotation(struct symbol *sym)
- {
- struct sannotation *a = container_of(sym, struct sannotation, symbol);
- return &a->annotation;
- }
- int symbol__inc_addr_samples(struct symbol *sym, struct map *map, u64 addr);
- int symbol__annotate(struct symbol *sym, struct map *map,
- struct list_head *head, size_t privsize);
- int symbol__tty_annotate(struct symbol *sym, struct map *map,
- bool print_lines, bool full_paths);
- #ifdef NO_NEWT_SUPPORT
- static inline int symbol__tui_annotate(symbol *sym __used,
- struct map *map __used)
- {
- return 0;
- }
- #else
- int symbol__tui_annotate(struct symbol *sym, struct map *map);
- #endif
- #endif /* __PERF_ANNOTATE_H */
|