Lines Matching full:report
3 * builtin-report.c
5 * Builtin report command: Analyze the perf.data input file,
76 struct report { struct
128 struct report *rep = cb; in report__config() argument
130 if (!strcmp(var, "report.group")) { in report__config()
134 if (!strcmp(var, "report.percent-limit")) { in report__config()
141 if (!strcmp(var, "report.children")) { in report__config()
145 if (!strcmp(var, "report.queue-size")) in report__config()
148 if (!strcmp(var, "report.sort_order")) { in report__config()
151 pr_err("Not enough memory for report.sort_order\n"); in report__config()
157 if (!strcmp(var, "report.skip-empty")) { in report__config()
171 struct report *rep = arg; in hist_iter__report_callback()
214 struct report *rep = arg; in hist_iter__branch_callback()
236 static void setup_forced_leader(struct report *report, in setup_forced_leader() argument
239 if (report->group_set) in setup_forced_leader()
246 struct report *rep = container_of(session->tool, struct report, tool); in process_feature_event()
274 struct report *rep = container_of(tool, struct report, tool); in process_sample_event()
354 struct report *rep = container_of(tool, struct report, tool); in process_read_event()
370 static int report__setup_sample_type(struct report *rep) in report__setup_sample_type()
477 static size_t hists__fprintf_nr_sample_events(struct hists *hists, struct report *rep, in hists__fprintf_nr_sample_events()
542 static int evlist__tui_block_hists_browse(struct evlist *evlist, struct report *rep) in evlist__tui_block_hists_browse()
558 static int evlist__tty_browse_hists(struct evlist *evlist, struct report *rep, const char *help) in evlist__tty_browse_hists()
616 static void report__warn_kptr_restrict(const struct report *rep) in report__warn_kptr_restrict()
645 static int report__gtk_browse_hists(struct report *rep, const char *help) in report__gtk_browse_hists()
660 static int report__browse_hists(struct report *rep) in report__browse_hists()
704 static int report__collapse_hists(struct report *rep) in report__collapse_hists()
754 struct report *rep = arg; in hists__resort_cb()
766 static void report__output_resort(struct report *rep) in report__output_resort()
797 struct report *rep = container_of(tool, struct report, tool); in count_lost_samples_event()
817 static void stats_setup(struct report *rep) in stats_setup()
827 static int stats_print(struct report *rep) in stats_print()
836 static void tasks_setup(struct report *rep) in tasks_setup()
1024 static int tasks_print(struct report *rep, FILE *fp) in tasks_print()
1045 static int __cmd_report(struct report *rep) in __cmd_report()
1255 struct report *rep = opt->value; in parse_percent_limit()
1302 "perf report [<options>]", in cmd_report()
1305 struct report report = { in cmd_report() local
1322 OPT_BOOLEAN(0, "stats", &report.stats_mode, "Display event stats"), in cmd_report()
1323 OPT_BOOLEAN(0, "tasks", &report.tasks_mode, "Display recorded tasks"), in cmd_report()
1324 OPT_BOOLEAN(0, "mmaps", &report.mmaps_mode, "Display recorded tasks memory maps"), in cmd_report()
1336 OPT_BOOLEAN('T', "threads", &report.show_threads, in cmd_report()
1338 OPT_STRING(0, "pretty", &report.pretty_printing_style, "key", in cmd_report()
1341 OPT_BOOLEAN(0, "tui", &report.use_tui, "Use the TUI interface"), in cmd_report()
1344 OPT_BOOLEAN(0, "gtk", &report.use_gtk, "Use the GTK2 interface"), in cmd_report()
1346 OPT_BOOLEAN(0, "stdio", &report.use_stdio, in cmd_report()
1348 OPT_BOOLEAN(0, "header", &report.header, "Show data header."), in cmd_report()
1349 OPT_BOOLEAN(0, "header-only", &report.header_only, in cmd_report()
1370 OPT_INTEGER(0, "max-stack", &report.max_stack, in cmd_report()
1374 OPT_BOOLEAN('G', "inverted", &report.inverted_callchain, in cmd_report()
1389 OPT_STRING(0, "symbol-filter", &report.symbol_filter_str, "filter", in cmd_report()
1402 OPT_STRING('C', "cpu", &report.cpu_list, "cpu", in cmd_report()
1406 OPT_BOOLEAN('I', "show-info", &report.show_full_info, in cmd_report()
1420 OPT_BOOLEAN_SET(0, "group", &symbol_conf.event_group, &report.group_set, in cmd_report()
1439 OPT_BOOLEAN(0, "mem-mode", &report.mem_mode, "mem access profile"), in cmd_report()
1442 OPT_CALLBACK(0, "percent-limit", &report, "percent", in cmd_report()
1453 OPT_BOOLEAN(0, "stitch-lbr", &report.stitch_lbr, in cmd_report()
1455 OPT_INTEGER(0, "socket-filter", &report.socket_filter, in cmd_report()
1464 OPT_STRING(0, "time", &report.time_str, "str", in cmd_report()
1475 OPTS_EVSWITCH(&report.evswitch), in cmd_report()
1476 OPT_BOOLEAN(0, "total-cycles", &report.total_cycles_mode, in cmd_report()
1478 OPT_BOOLEAN(0, "disable-order", &report.disable_order, in cmd_report()
1480 OPT_BOOLEAN(0, "skip-empty", &report.skip_empty, in cmd_report()
1507 ret = perf_config(report__config, &report); in cmd_report()
1520 report.symbol_filter_str = argv[0]; in cmd_report()
1544 if (report.mmaps_mode) in cmd_report()
1545 report.tasks_mode = true; in cmd_report()
1547 if (dump_trace && report.disable_order) in cmd_report()
1557 if (report.inverted_callchain) in cmd_report()
1563 (int)itrace_synth_opts.callchain_sz > report.max_stack) in cmd_report()
1564 report.max_stack = itrace_synth_opts.callchain_sz; in cmd_report()
1577 symbol_conf.skip_empty = report.skip_empty; in cmd_report()
1579 perf_tool__init(&report.tool, ordered_events); in cmd_report()
1580 report.tool.sample = process_sample_event; in cmd_report()
1581 report.tool.mmap = perf_event__process_mmap; in cmd_report()
1582 report.tool.mmap2 = perf_event__process_mmap2; in cmd_report()
1583 report.tool.comm = perf_event__process_comm; in cmd_report()
1584 report.tool.namespaces = perf_event__process_namespaces; in cmd_report()
1585 report.tool.cgroup = perf_event__process_cgroup; in cmd_report()
1586 report.tool.exit = perf_event__process_exit; in cmd_report()
1587 report.tool.fork = perf_event__process_fork; in cmd_report()
1588 report.tool.context_switch = perf_event__process_switch; in cmd_report()
1589 report.tool.lost = perf_event__process_lost; in cmd_report()
1590 report.tool.read = process_read_event; in cmd_report()
1591 report.tool.attr = process_attr; in cmd_report()
1593 report.tool.tracing_data = perf_event__process_tracing_data; in cmd_report()
1595 report.tool.build_id = perf_event__process_build_id; in cmd_report()
1596 report.tool.id_index = perf_event__process_id_index; in cmd_report()
1597 report.tool.auxtrace_info = perf_event__process_auxtrace_info; in cmd_report()
1598 report.tool.auxtrace = perf_event__process_auxtrace; in cmd_report()
1599 report.tool.event_update = perf_event__process_event_update; in cmd_report()
1600 report.tool.feature = process_feature_event; in cmd_report()
1601 report.tool.ordering_requires_timestamps = true; in cmd_report()
1603 session = perf_session__new(&data, &report.tool); in cmd_report()
1609 ret = evswitch__init(&report.evswitch, session->evlist, stderr); in cmd_report()
1616 if (report.queue_size) { in cmd_report()
1618 report.queue_size); in cmd_report()
1623 report.session = session; in cmd_report()
1630 setup_forced_leader(&report, session->evlist); in cmd_report()
1644 memset(&report.brtype_stat, 0, sizeof(struct branch_type_stat)); in cmd_report()
1665 if (report.mem_mode) { in cmd_report()
1686 if (report.use_stdio) in cmd_report()
1689 else if (report.use_tui) in cmd_report()
1693 else if (report.use_gtk) in cmd_report()
1698 if (report.header || report.header_only || report.show_threads) in cmd_report()
1700 if (report.header || report.header_only) in cmd_report()
1701 report.tool.show_feat_hdr = SHOW_FEAT_HEADER; in cmd_report()
1702 if (report.show_full_info) in cmd_report()
1703 report.tool.show_feat_hdr = SHOW_FEAT_HEADER_FULL_INFO; in cmd_report()
1704 if (report.stats_mode || report.tasks_mode) in cmd_report()
1706 if (report.stats_mode && report.tasks_mode) { in cmd_report()
1711 if (report.total_cycles_mode) { in cmd_report()
1713 report.total_cycles_mode = false; in cmd_report()
1719 report.data_type = true; in cmd_report()
1736 if (report.data_type && use_browser == 1) { in cmd_report()
1742 if (report.disable_order || !perf_session__has_switch_events(session)) { in cmd_report()
1749 if (report.disable_order) in cmd_report()
1772 report.symbol_ipc = true; in cmd_report()
1792 if ((report.header || report.header_only) && !quiet) { in cmd_report()
1794 report.show_full_info); in cmd_report()
1795 if (report.header_only) { in cmd_report()
1807 !report.stats_mode && !report.tasks_mode) { in cmd_report()
1817 if (ui__has_annotation() || report.symbol_ipc || report.data_type || in cmd_report()
1818 report.total_cycles_mode) { in cmd_report()
1842 if (report.time_str) { in cmd_report()
1843 ret = perf_time__parse_for_ranges(report.time_str, session, in cmd_report()
1844 &report.ptime_range, in cmd_report()
1845 &report.range_size, in cmd_report()
1846 &report.range_num); in cmd_report()
1851 report.ptime_range, in cmd_report()
1852 report.range_num); in cmd_report()
1867 ret = __cmd_report(&report); in cmd_report()
1883 if (report.ptime_range) { in cmd_report()
1885 zfree(&report.ptime_range); in cmd_report()
1888 if (report.block_reports) { in cmd_report()
1889 block_info__free_report(report.block_reports, in cmd_report()
1890 report.nr_block_reports); in cmd_report()
1891 report.block_reports = NULL; in cmd_report()