Lines Matching full:struct
18 struct addr_location;
19 struct mem_info;
20 struct kvm_info;
21 struct branch_info;
22 struct branch_stack;
23 struct block_info;
24 struct ui_progress;
102 struct thread;
103 struct dso;
107 struct he_mem_stat {
112 struct hists {
113 struct rb_root_cached entries_in_array[2];
114 struct rb_root_cached *entries_in;
115 struct rb_root_cached entries;
116 struct rb_root_cached entries_collapsed;
123 struct thread *thread_filter;
124 const struct dso *dso_filter;
128 struct mutex lock;
129 struct hists_stats stats;
134 struct perf_hpp_list *hpp_list;
135 struct list_head hpp_formats;
139 struct he_mem_stat *mem_stat_total;
144 struct hist_entry_iter;
146 struct hist_iter_ops {
147 int (*prepare_entry)(struct hist_entry_iter *, struct addr_location *);
148 int (*add_single_entry)(struct hist_entry_iter *, struct addr_location *);
149 int (*next_entry)(struct hist_entry_iter *, struct addr_location *);
150 int (*add_next_entry)(struct hist_entry_iter *, struct addr_location *);
151 int (*finish_entry)(struct hist_entry_iter *, struct addr_location *);
154 struct hist_entry_iter {
158 struct evsel *evsel;
159 struct perf_sample *sample;
160 struct hist_entry *he;
161 struct symbol *parent;
163 struct mem_info *mi;
164 struct branch_info *bi;
165 struct hist_entry **he_cache;
167 const struct hist_iter_ops *ops;
169 int (*add_entry_cb)(struct hist_entry_iter *iter,
170 struct addr_location *al, bool single, void *arg);
174 extern const struct hist_iter_ops hist_iter_normal;
175 extern const struct hist_iter_ops hist_iter_branch;
176 extern const struct hist_iter_ops hist_iter_mem;
177 extern const struct hist_iter_ops hist_iter_cumulative;
179 struct res_sample {
185 struct he_stat {
203 struct namespace_id {
208 struct hist_entry_diff {
223 struct stats stats;
227 struct hist_entry_ops {
233 * struct hist_entry - histogram entry
238 struct hist_entry {
239 struct rb_node rb_node_in;
240 struct rb_node rb_node;
242 struct list_head node;
243 struct list_head head;
245 struct he_stat stat;
246 struct he_stat *stat_acc;
247 struct he_mem_stat *mem_stat;
248 struct map_symbol ms;
249 struct thread *thread;
250 struct comm *comm;
251 struct namespace_id cgroup_id;
266 struct simd_flags simd_flags;
282 struct hist_entry_diff diff;
283 struct /* for TUI */ {
294 struct symbol *parent;
295 struct branch_info *branch_info;
297 struct hists *hists;
298 struct mem_info *mem_info;
299 struct block_info *block_info;
300 struct kvm_info *kvm_info;
304 struct res_sample *res_samples;
306 struct perf_hpp_list *hpp_list;
307 struct hist_entry *parent_he;
308 struct hist_entry_ops *ops;
309 struct annotated_data_type *mem_type;
312 struct {
313 struct rb_root_cached hroot_in;
314 struct rb_root_cached hroot_out;
316 struct rb_root sorted_chain; /* leaf entry has callchains */
318 struct callchain_root callchain[0]; /* must be last member */
321 static __pure inline bool hist_entry__has_callchains(struct hist_entry *he) in hist_entry__has_callchains()
326 static inline bool hist_entry__has_pairs(struct hist_entry *he) in hist_entry__has_pairs()
331 static inline struct hist_entry *hist_entry__next_pair(struct hist_entry *he) in hist_entry__next_pair()
334 return list_entry(he->pairs.node.next, struct hist_entry, pairs.node); in hist_entry__next_pair()
338 static inline void hist_entry__add_pair(struct hist_entry *pair, in hist_entry__add_pair()
339 struct hist_entry *he) in hist_entry__add_pair()
344 struct hist_entry *hists__add_entry(struct hists *hists,
345 struct addr_location *al,
346 struct symbol *parent,
347 struct branch_info *bi,
348 struct mem_info *mi,
349 struct kvm_info *ki,
350 struct perf_sample *sample,
353 struct hist_entry *hists__add_entry_ops(struct hists *hists,
354 struct hist_entry_ops *ops,
355 struct addr_location *al,
356 struct symbol *sym_parent,
357 struct branch_info *bi,
358 struct mem_info *mi,
359 struct kvm_info *ki,
360 struct perf_sample *sample,
363 struct hist_entry *hists__add_entry_block(struct hists *hists,
364 struct addr_location *al,
365 struct block_info *bi);
367 int hist_entry_iter__add(struct hist_entry_iter *iter, struct addr_location *al,
370 struct perf_hpp;
371 struct perf_hpp_fmt;
374 int hist_entry__sort_snprintf(struct hist_entry *he, char *bf, size_t size,
375 struct hists *hists);
376 int hist_entry__snprintf_alignment(struct hist_entry *he, struct perf_hpp *hpp,
377 struct perf_hpp_fmt *fmt, int printed);
378 int hist_entry__sym_snprintf(struct hist_entry *he, char *bf, size_t size,
380 void hist_entry__delete(struct hist_entry *he);
382 typedef int (*hists__resort_cb_t)(struct hist_entry *he, void *arg);
384 void evsel__output_resort_cb(struct evsel *evsel, struct ui_progress *prog,
386 void evsel__output_resort(struct evsel *evsel, struct ui_progress *prog);
387 void hists__output_resort(struct hists *hists, struct ui_progress *prog);
388 void hists__output_resort_cb(struct hists *hists, struct ui_progress *prog,
390 int hists__collapse_resort(struct hists *hists, struct ui_progress *prog);
392 void hists__decay_entries(struct hists *hists, bool zap_user, bool zap_kernel);
393 void hists__delete_entries(struct hists *hists);
394 void hists__output_recalc_col_len(struct hists *hists, int max_rows);
396 struct hist_entry *hists__get_entry(struct hists *hists, int idx);
398 u64 hists__total_period(struct hists *hists);
399 u64 hists__total_latency(struct hists *hists);
400 void hists__reset_stats(struct hists *hists);
401 void hists__inc_stats(struct hists *hists, struct hist_entry *h);
402 void hists__inc_nr_events(struct hists *hists);
403 void hists__inc_nr_samples(struct hists *hists, bool filtered);
404 void hists__inc_nr_lost_samples(struct hists *hists, u32 lost);
405 void hists__inc_nr_dropped_samples(struct hists *hists, u32 lost);
407 size_t hists__fprintf(struct hists *hists, bool show_header, int max_rows,
410 size_t evlist__fprintf_nr_events(struct evlist *evlist, FILE *fp);
412 void hists__filter_by_dso(struct hists *hists);
413 void hists__filter_by_thread(struct hists *hists);
414 void hists__filter_by_symbol(struct hists *hists);
415 void hists__filter_by_socket(struct hists *hists);
416 void hists__filter_by_parallelism(struct hists *hists);
418 static inline bool hists__has_filter(struct hists *hists) in hists__has_filter()
425 u16 hists__col_len(struct hists *hists, enum hist_column col);
426 void hists__set_col_len(struct hists *hists, enum hist_column col, u16 len);
427 bool hists__new_col_len(struct hists *hists, enum hist_column col, u16 len);
428 void hists__reset_col_len(struct hists *hists);
429 void hists__calc_col_len(struct hists *hists, struct hist_entry *he);
431 void hists__match(struct hists *leader, struct hists *other);
432 int hists__link(struct hists *leader, struct hists *other);
433 int hists__unlink(struct hists *hists);
435 static inline float hist_entry__get_percent_limit(struct hist_entry *he) in hist_entry__get_percent_limit()
449 struct hists_evsel {
450 struct evsel evsel;
451 struct hists hists;
454 static inline struct evsel *hists_to_evsel(struct hists *hists) in hists_to_evsel()
456 struct hists_evsel *hevsel = container_of(hists, struct hists_evsel, hists); in hists_to_evsel()
460 static inline struct hists *evsel__hists(struct evsel *evsel) in evsel__hists()
462 struct hists_evsel *hevsel = (struct hists_evsel *)evsel; in evsel__hists()
466 static __pure inline bool hists__has_callchains(struct hists *hists) in hists__has_callchains()
472 int __hists__init(struct hists *hists, struct perf_hpp_list *hpp_list);
474 struct rb_root_cached *hists__get_rotate_entries_in(struct hists *hists);
476 struct perf_hpp {
485 struct perf_hpp_fmt *, struct hist_entry *, struct hist_entry *);
487 struct perf_hpp_fmt {
489 int (*header)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
490 struct hists *hists, int line, int *span);
491 int (*width)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
492 struct hists *hists);
493 void (*init)(struct perf_hpp_fmt *fmt, struct hist_entry *he);
494 int (*color)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
495 struct hist_entry *he);
496 int (*entry)(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
497 struct hist_entry *he);
501 bool (*equal)(struct perf_hpp_fmt *a, struct perf_hpp_fmt *b);
502 void (*free)(struct perf_hpp_fmt *fmt);
504 struct list_head list;
505 struct list_head sort_list;
513 struct perf_hpp_list {
514 struct list_head fields;
515 struct list_head sorts;
527 extern struct perf_hpp_list perf_hpp_list;
529 struct perf_hpp_list_node {
530 struct list_head list;
531 struct perf_hpp_list hpp;
536 void perf_hpp_list__column_register(struct perf_hpp_list *list,
537 struct perf_hpp_fmt *format);
538 void perf_hpp_list__register_sort_field(struct perf_hpp_list *list,
539 struct perf_hpp_fmt *format);
540 void perf_hpp_list__prepend_sort_field(struct perf_hpp_list *list,
541 struct perf_hpp_fmt *format);
543 static inline void perf_hpp__column_register(struct perf_hpp_fmt *format) in perf_hpp__column_register()
548 static inline void perf_hpp__register_sort_field(struct perf_hpp_fmt *format) in perf_hpp__register_sort_field()
553 static inline void perf_hpp__prepend_sort_field(struct perf_hpp_fmt *format) in perf_hpp__prepend_sort_field()
576 extern struct perf_hpp_fmt perf_hpp__format[];
603 void perf_hpp__cancel_cumulate(struct evlist *evlist);
604 void perf_hpp__cancel_latency(struct evlist *evlist);
605 void perf_hpp__setup_output_field(struct perf_hpp_list *list);
606 void perf_hpp__reset_output_field(struct perf_hpp_list *list);
607 void perf_hpp__append_sort_keys(struct perf_hpp_list *list);
608 int perf_hpp__setup_hists_formats(struct perf_hpp_list *list,
609 struct evlist *evlist);
610 int perf_hpp__alloc_mem_stats(struct perf_hpp_list *list,
611 struct evlist *evlist);
614 bool perf_hpp__is_sort_entry(struct perf_hpp_fmt *format);
615 bool perf_hpp__is_dynamic_entry(struct perf_hpp_fmt *format);
616 bool perf_hpp__defined_dynamic_entry(struct perf_hpp_fmt *fmt, struct hists *hists);
617 bool perf_hpp__is_trace_entry(struct perf_hpp_fmt *fmt);
618 bool perf_hpp__is_srcline_entry(struct perf_hpp_fmt *fmt);
619 bool perf_hpp__is_srcfile_entry(struct perf_hpp_fmt *fmt);
620 bool perf_hpp__is_thread_entry(struct perf_hpp_fmt *fmt);
621 bool perf_hpp__is_comm_entry(struct perf_hpp_fmt *fmt);
622 bool perf_hpp__is_dso_entry(struct perf_hpp_fmt *fmt);
623 bool perf_hpp__is_sym_entry(struct perf_hpp_fmt *fmt);
624 bool perf_hpp__is_parallelism_entry(struct perf_hpp_fmt *fmt);
626 struct perf_hpp_fmt *perf_hpp_fmt__dup(struct perf_hpp_fmt *fmt);
628 int hist_entry__filter(struct hist_entry *he, int type, const void *arg);
630 static inline bool perf_hpp__should_skip(struct perf_hpp_fmt *format, in perf_hpp__should_skip()
631 struct hists *hists) in perf_hpp__should_skip()
643 void perf_hpp__reset_width(struct perf_hpp_fmt *fmt, struct hists *hists);
644 void perf_hpp__reset_sort_width(struct perf_hpp_fmt *fmt, struct hists *hists);
646 void hists__reset_column_width(struct hists *hists);
655 typedef u64 (*hpp_field_fn)(struct hist_entry *he);
656 typedef int (*hpp_callback_fn)(struct perf_hpp *hpp, bool front);
657 typedef int (*hpp_snprint_fn)(struct perf_hpp *hpp, const char *fmt, ...);
659 int hpp__fmt(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
660 struct hist_entry *he, hpp_field_fn get_field,
663 int hpp__fmt_acc(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
664 struct hist_entry *he, hpp_field_fn get_field,
667 int hpp__fmt_mem_stat(struct perf_hpp_fmt *fmt, struct perf_hpp *hpp,
668 struct hist_entry *he, enum mem_stat_type mst,
671 static inline void advance_hpp(struct perf_hpp *hpp, int inc) in advance_hpp()
689 struct evlist;
691 struct hist_browser_timer {
703 struct block_hist {
704 struct hists block_hists;
705 struct perf_hpp_list block_list;
706 struct perf_hpp_fmt block_fmt;
709 struct hist_entry he;
714 void attr_to_script(char *buf, struct perf_event_attr *attr);
716 int __hist_entry__tui_annotate(struct hist_entry *he, struct map_symbol *ms,
717 struct evsel *evsel,
718 struct hist_browser_timer *hbt);
720 int hist_entry__tui_annotate(struct hist_entry *he, struct evsel *evsel,
721 struct hist_browser_timer *hbt);
723 int evlist__tui_browse_hists(struct evlist *evlist, const char *help, struct hist_browser_timer *hb…
724 float min_pcnt, struct perf_env *env, bool warn_lost_event);
726 int script_browse(const char *script_opt, struct evsel *evsel);
729 int res_sample_browse(struct res_sample *res_samples, int num_res,
730 struct evsel *evsel, enum rstype rstype);
733 int block_hists_tui_browse(struct block_hist *bh, struct evsel *evsel,
734 float min_percent, struct perf_env *env);
737 int evlist__tui_browse_hists(struct evlist *evlist __maybe_unused, in evlist__tui_browse_hists()
739 struct hist_browser_timer *hbt __maybe_unused, in evlist__tui_browse_hists()
741 struct perf_env *env __maybe_unused, in evlist__tui_browse_hists()
746 static inline int __hist_entry__tui_annotate(struct hist_entry *he __maybe_unused, in __hist_entry__tui_annotate()
747 struct map_symbol *ms __maybe_unused, in __hist_entry__tui_annotate()
748 struct evsel *evsel __maybe_unused, in __hist_entry__tui_annotate()
749 struct hist_browser_timer *hbt __maybe_unused) in __hist_entry__tui_annotate()
754 static inline int hist_entry__tui_annotate(struct hist_entry *he __maybe_unused, in hist_entry__tui_annotate()
755 struct evsel *evsel __maybe_unused, in hist_entry__tui_annotate()
756 struct hist_browser_timer *hbt __maybe_unused) in hist_entry__tui_annotate()
762 struct evsel *evsel __maybe_unused) in script_browse()
767 static inline int res_sample_browse(struct res_sample *res_samples __maybe_unused, in res_sample_browse()
769 struct evsel *evsel __maybe_unused, in res_sample_browse()
777 static inline int block_hists_tui_browse(struct block_hist *bh __maybe_unused, in block_hists_tui_browse()
778 struct evsel *evsel __maybe_unused, in block_hists_tui_browse()
780 struct perf_env *env __maybe_unused) in block_hists_tui_browse()
791 unsigned int hists__sort_list_width(struct hists *hists);
792 unsigned int hists__overhead_width(struct hists *hists);
794 void hist__account_cycles(struct branch_stack *bs, struct addr_location *al,
795 struct perf_sample *sample, bool nonany_branch_mode,
796 u64 *total_cycles, struct evsel *evsel);
798 struct option;
799 int parse_filter_percentage(const struct option *opt, const char *arg, int unset);
802 void perf_hpp_list__init(struct perf_hpp_list *list);
810 struct rb_node *rb_hierarchy_last(struct rb_node *node);
811 struct rb_node *__rb_hierarchy_next(struct rb_node *node,
813 struct rb_node *rb_hierarchy_prev(struct rb_node *node);
815 static inline struct rb_node *rb_hierarchy_next(struct rb_node *node) in rb_hierarchy_next()
822 bool hist_entry__has_hierarchy_children(struct hist_entry *he, float limit);
823 int hpp_color_scnprintf(struct perf_hpp *hpp, const char *fmt, ...);
824 int __hpp__slsmg_color_printf(struct perf_hpp *hpp, const char *fmt, ...);
825 int __hist_entry__snprintf(struct hist_entry *he, struct perf_hpp *hpp,
826 struct perf_hpp_list *hpp_list);
827 int hists__fprintf_headers(struct hists *hists, FILE *fp);
828 int __hists__scnprintf_title(struct hists *hists, char *bf, size_t size, bool show_freq);
830 static inline int hists__scnprintf_title(struct hists *hists, char *bf, size_t size) in hists__scnprintf_title()