John Kacur | 3d1d07e | 2009-09-28 15:32:55 +0200 | [diff] [blame] | 1 | #ifndef __PERF_HIST_H |
| 2 | #define __PERF_HIST_H |
John Kacur | 3d1d07e | 2009-09-28 15:32:55 +0200 | [diff] [blame] | 3 | |
Arnaldo Carvalho de Melo | 4e4f06e | 2009-12-14 13:10:39 -0200 | [diff] [blame] | 4 | #include <linux/types.h> |
John Kacur | 3d1d07e | 2009-09-28 15:32:55 +0200 | [diff] [blame] | 5 | #include "callchain.h" |
John Kacur | 3d1d07e | 2009-09-28 15:32:55 +0200 | [diff] [blame] | 6 | |
John Kacur | 3d1d07e | 2009-09-28 15:32:55 +0200 | [diff] [blame] | 7 | extern struct callchain_param callchain_param; |
John Kacur | 3d1d07e | 2009-09-28 15:32:55 +0200 | [diff] [blame] | 8 | |
Arnaldo Carvalho de Melo | 4e4f06e | 2009-12-14 13:10:39 -0200 | [diff] [blame] | 9 | struct hist_entry; |
| 10 | struct addr_location; |
| 11 | struct symbol; |
Eric B Munson | d403d0a | 2010-03-05 12:51:06 -0300 | [diff] [blame] | 12 | struct rb_root; |
Arnaldo Carvalho de Melo | 4e4f06e | 2009-12-14 13:10:39 -0200 | [diff] [blame] | 13 | |
Arnaldo Carvalho de Melo | 1c02c4d | 2010-05-10 13:04:11 -0300 | [diff] [blame] | 14 | struct events_stats { |
| 15 | u64 total; |
| 16 | u64 lost; |
| 17 | }; |
| 18 | |
| 19 | struct hists { |
| 20 | struct rb_node rb_node; |
| 21 | struct rb_root entries; |
Arnaldo Carvalho de Melo | fefb0b9 | 2010-05-10 13:57:51 -0300 | [diff] [blame] | 22 | u64 nr_entries; |
Arnaldo Carvalho de Melo | 1c02c4d | 2010-05-10 13:04:11 -0300 | [diff] [blame] | 23 | struct events_stats stats; |
| 24 | u64 config; |
| 25 | u64 event_stream; |
| 26 | u32 type; |
Arnaldo Carvalho de Melo | fefb0b9 | 2010-05-10 13:57:51 -0300 | [diff] [blame] | 27 | u32 max_sym_namelen; |
Arnaldo Carvalho de Melo | 1c02c4d | 2010-05-10 13:04:11 -0300 | [diff] [blame] | 28 | }; |
| 29 | |
| 30 | struct hist_entry *__hists__add_entry(struct hists *self, |
| 31 | struct addr_location *al, |
| 32 | struct symbol *parent, u64 count); |
John Kacur | 3d1d07e | 2009-09-28 15:32:55 +0200 | [diff] [blame] | 33 | extern int64_t hist_entry__cmp(struct hist_entry *, struct hist_entry *); |
| 34 | extern int64_t hist_entry__collapse(struct hist_entry *, struct hist_entry *); |
Arnaldo Carvalho de Melo | 1c02c4d | 2010-05-10 13:04:11 -0300 | [diff] [blame] | 35 | int hist_entry__fprintf(struct hist_entry *self, struct hists *pair_hists, |
| 36 | bool show_displacement, long displacement, FILE *fp, |
| 37 | u64 total); |
| 38 | int hist_entry__snprintf(struct hist_entry *self, char *bf, size_t size, |
| 39 | struct hists *pair_hists, bool show_displacement, |
| 40 | long displacement, bool color, u64 total); |
Arnaldo Carvalho de Melo | 4e4f06e | 2009-12-14 13:10:39 -0200 | [diff] [blame] | 41 | void hist_entry__free(struct hist_entry *); |
| 42 | |
Arnaldo Carvalho de Melo | fefb0b9 | 2010-05-10 13:57:51 -0300 | [diff] [blame] | 43 | void hists__output_resort(struct hists *self); |
Arnaldo Carvalho de Melo | 1c02c4d | 2010-05-10 13:04:11 -0300 | [diff] [blame] | 44 | void hists__collapse_resort(struct hists *self); |
| 45 | size_t hists__fprintf(struct hists *self, struct hists *pair, |
| 46 | bool show_displacement, FILE *fp); |
Arnaldo Carvalho de Melo | b09e019 | 2010-05-11 11:10:15 -0300 | [diff] [blame^] | 47 | |
| 48 | void hists__filter_by_dso(struct hists *self, const struct dso *dso); |
| 49 | void hists__filter_by_thread(struct hists *self, const struct thread *thread); |
| 50 | |
| 51 | #ifdef NO_NEWT_SUPPORT |
| 52 | static inline int hists__browse(struct hists self __used, |
| 53 | const char *helpline __used, |
| 54 | const char *input_name __used) |
| 55 | { |
| 56 | return 0; |
| 57 | } |
| 58 | #else |
| 59 | int hists__browse(struct hists *self, const char *helpline, |
| 60 | const char *input_name); |
| 61 | #endif |
John Kacur | 3d1d07e | 2009-09-28 15:32:55 +0200 | [diff] [blame] | 62 | #endif /* __PERF_HIST_H */ |