aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/util/hist.h
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/util/hist.h')
-rw-r--r--tools/perf/util/hist.h63
1 files changed, 16 insertions, 47 deletions
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h
index 587d375d3430..3beb97c4d822 100644
--- a/tools/perf/util/hist.h
+++ b/tools/perf/util/hist.h
@@ -9,33 +9,6 @@ extern struct callchain_param callchain_param;
9struct hist_entry; 9struct hist_entry;
10struct addr_location; 10struct addr_location;
11struct symbol; 11struct symbol;
12struct rb_root;
13
14struct objdump_line {
15 struct list_head node;
16 s64 offset;
17 char *line;
18};
19
20void objdump_line__free(struct objdump_line *self);
21struct objdump_line *objdump__get_next_ip_line(struct list_head *head,
22 struct objdump_line *pos);
23
24struct sym_hist {
25 u64 sum;
26 u64 ip[0];
27};
28
29struct sym_ext {
30 struct rb_node node;
31 double percent;
32 char *path;
33};
34
35struct sym_priv {
36 struct sym_hist *hist;
37 struct sym_ext *ext;
38};
39 12
40/* 13/*
41 * The kernel collects the number of events it couldn't send in a stretch and 14 * The kernel collects the number of events it couldn't send in a stretch and
@@ -52,8 +25,11 @@ struct sym_priv {
52struct events_stats { 25struct events_stats {
53 u64 total_period; 26 u64 total_period;
54 u64 total_lost; 27 u64 total_lost;
28 u64 total_invalid_chains;
55 u32 nr_events[PERF_RECORD_HEADER_MAX]; 29 u32 nr_events[PERF_RECORD_HEADER_MAX];
56 u32 nr_unknown_events; 30 u32 nr_unknown_events;
31 u32 nr_invalid_chains;
32 u32 nr_unknown_id;
57}; 33};
58 34
59enum hist_column { 35enum hist_column {
@@ -67,14 +43,13 @@ enum hist_column {
67}; 43};
68 44
69struct hists { 45struct hists {
70 struct rb_node rb_node;
71 struct rb_root entries; 46 struct rb_root entries;
72 u64 nr_entries; 47 u64 nr_entries;
73 struct events_stats stats; 48 struct events_stats stats;
74 u64 config;
75 u64 event_stream; 49 u64 event_stream;
76 u32 type;
77 u16 col_len[HISTC_NR_COLS]; 50 u16 col_len[HISTC_NR_COLS];
51 /* Best would be to reuse the session callchain cursor */
52 struct callchain_cursor callchain_cursor;
78}; 53};
79 54
80struct hist_entry *__hists__add_entry(struct hists *self, 55struct hist_entry *__hists__add_entry(struct hists *self,
@@ -100,9 +75,8 @@ size_t hists__fprintf_nr_events(struct hists *self, FILE *fp);
100size_t hists__fprintf(struct hists *self, struct hists *pair, 75size_t hists__fprintf(struct hists *self, struct hists *pair,
101 bool show_displacement, FILE *fp); 76 bool show_displacement, FILE *fp);
102 77
103int hist_entry__inc_addr_samples(struct hist_entry *self, u64 ip); 78int hist_entry__inc_addr_samples(struct hist_entry *self, int evidx, u64 addr);
104int hist_entry__annotate(struct hist_entry *self, struct list_head *head, 79int hist_entry__annotate(struct hist_entry *self, size_t privsize);
105 size_t privsize);
106 80
107void hists__filter_by_dso(struct hists *self, const struct dso *dso); 81void hists__filter_by_dso(struct hists *self, const struct dso *dso);
108void hists__filter_by_thread(struct hists *self, const struct thread *thread); 82void hists__filter_by_thread(struct hists *self, const struct thread *thread);
@@ -111,21 +85,18 @@ u16 hists__col_len(struct hists *self, enum hist_column col);
111void hists__set_col_len(struct hists *self, enum hist_column col, u16 len); 85void hists__set_col_len(struct hists *self, enum hist_column col, u16 len);
112bool hists__new_col_len(struct hists *self, enum hist_column col, u16 len); 86bool hists__new_col_len(struct hists *self, enum hist_column col, u16 len);
113 87
114#ifdef NO_NEWT_SUPPORT 88struct perf_evlist;
115static inline int hists__browse(struct hists *self __used,
116 const char *helpline __used,
117 const char *ev_name __used)
118{
119 return 0;
120}
121 89
122static inline int hists__tui_browse_tree(struct rb_root *self __used, 90#ifdef NO_NEWT_SUPPORT
123 const char *help __used) 91static inline
92int perf_evlist__tui_browse_hists(struct perf_evlist *evlist __used,
93 const char *help __used)
124{ 94{
125 return 0; 95 return 0;
126} 96}
127 97
128static inline int hist_entry__tui_annotate(struct hist_entry *self __used) 98static inline int hist_entry__tui_annotate(struct hist_entry *self __used,
99 int evidx __used)
129{ 100{
130 return 0; 101 return 0;
131} 102}
@@ -133,14 +104,12 @@ static inline int hist_entry__tui_annotate(struct hist_entry *self __used)
133#define KEY_RIGHT -2 104#define KEY_RIGHT -2
134#else 105#else
135#include <newt.h> 106#include <newt.h>
136int hists__browse(struct hists *self, const char *helpline, 107int hist_entry__tui_annotate(struct hist_entry *self, int evidx);
137 const char *ev_name);
138int hist_entry__tui_annotate(struct hist_entry *self);
139 108
140#define KEY_LEFT NEWT_KEY_LEFT 109#define KEY_LEFT NEWT_KEY_LEFT
141#define KEY_RIGHT NEWT_KEY_RIGHT 110#define KEY_RIGHT NEWT_KEY_RIGHT
142 111
143int hists__tui_browse_tree(struct rb_root *self, const char *help); 112int perf_evlist__tui_browse_hists(struct perf_evlist *evlist, const char *help);
144#endif 113#endif
145 114
146unsigned int hists__sort_list_width(struct hists *self); 115unsigned int hists__sort_list_width(struct hists *self);