diff options
Diffstat (limited to 'tools/perf/util/hist.h')
-rw-r--r-- | tools/perf/util/hist.h | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index 0b4c8df914bd..6f17dcd8412c 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h | |||
@@ -37,9 +37,23 @@ struct sym_priv { | |||
37 | struct sym_ext *ext; | 37 | struct sym_ext *ext; |
38 | }; | 38 | }; |
39 | 39 | ||
40 | /* | ||
41 | * The kernel collects the number of events it couldn't send in a stretch and | ||
42 | * when possible sends this number in a PERF_RECORD_LOST event. The number of | ||
43 | * such "chunks" of lost events is stored in .nr_events[PERF_EVENT_LOST] while | ||
44 | * total_lost tells exactly how many events the kernel in fact lost, i.e. it is | ||
45 | * the sum of all struct lost_event.lost fields reported. | ||
46 | * | ||
47 | * The total_period is needed because by default auto-freq is used, so | ||
48 | * multipling nr_events[PERF_EVENT_SAMPLE] by a frequency isn't possible to get | ||
49 | * the total number of low level events, it is necessary to to sum all struct | ||
50 | * sample_event.period and stash the result in total_period. | ||
51 | */ | ||
40 | struct events_stats { | 52 | struct events_stats { |
41 | u64 total; | 53 | u64 total_period; |
42 | u64 lost; | 54 | u64 total_lost; |
55 | u32 nr_events[PERF_RECORD_HEADER_MAX]; | ||
56 | u32 nr_unknown_events; | ||
43 | }; | 57 | }; |
44 | 58 | ||
45 | struct hists { | 59 | struct hists { |
@@ -55,7 +69,7 @@ struct hists { | |||
55 | 69 | ||
56 | struct hist_entry *__hists__add_entry(struct hists *self, | 70 | struct hist_entry *__hists__add_entry(struct hists *self, |
57 | struct addr_location *al, | 71 | struct addr_location *al, |
58 | struct symbol *parent, u64 count); | 72 | struct symbol *parent, u64 period); |
59 | extern int64_t hist_entry__cmp(struct hist_entry *, struct hist_entry *); | 73 | extern int64_t hist_entry__cmp(struct hist_entry *, struct hist_entry *); |
60 | extern int64_t hist_entry__collapse(struct hist_entry *, struct hist_entry *); | 74 | extern int64_t hist_entry__collapse(struct hist_entry *, struct hist_entry *); |
61 | int hist_entry__fprintf(struct hist_entry *self, struct hists *pair_hists, | 75 | int hist_entry__fprintf(struct hist_entry *self, struct hists *pair_hists, |
@@ -68,6 +82,10 @@ void hist_entry__free(struct hist_entry *); | |||
68 | 82 | ||
69 | void hists__output_resort(struct hists *self); | 83 | void hists__output_resort(struct hists *self); |
70 | void hists__collapse_resort(struct hists *self); | 84 | void hists__collapse_resort(struct hists *self); |
85 | |||
86 | void hists__inc_nr_events(struct hists *self, u32 type); | ||
87 | size_t hists__fprintf_nr_events(struct hists *self, FILE *fp); | ||
88 | |||
71 | size_t hists__fprintf(struct hists *self, struct hists *pair, | 89 | size_t hists__fprintf(struct hists *self, struct hists *pair, |
72 | bool show_displacement, FILE *fp); | 90 | bool show_displacement, FILE *fp); |
73 | 91 | ||