Lines Matching refs:kwork

168 static int sort_dimension__add(struct perf_kwork *kwork __maybe_unused,  in sort_dimension__add()
210 if (kwork->report == KWORK_REPORT_LATENCY) in sort_dimension__add()
223 static void setup_sorting(struct perf_kwork *kwork, in setup_sorting() argument
227 char *tmp, *tok, *str = strdup(kwork->sort_order); in setup_sorting()
231 if (sort_dimension__add(kwork, tok, &kwork->sort_list) < 0) in setup_sorting()
236 pr_debug("Sort order: %s\n", kwork->sort_order); in setup_sorting()
240 static struct kwork_atom *atom_new(struct perf_kwork *kwork, in atom_new() argument
247 list_for_each_entry(page, &kwork->atom_page_list, list) { in atom_new()
267 list_add_tail(&page->list, &kwork->atom_page_list); in atom_new()
395 static void profile_update_timespan(struct perf_kwork *kwork, in profile_update_timespan() argument
398 if (!kwork->summary) in profile_update_timespan()
401 if ((kwork->timestart == 0) || (kwork->timestart > sample->time)) in profile_update_timespan()
402 kwork->timestart = sample->time; in profile_update_timespan()
404 if (kwork->timeend < sample->time) in profile_update_timespan()
405 kwork->timeend = sample->time; in profile_update_timespan()
408 static bool profile_name_match(struct perf_kwork *kwork, in profile_name_match() argument
411 if (kwork->profile_name && work->name && in profile_name_match()
412 (strcmp(work->name, kwork->profile_name) != 0)) { in profile_name_match()
419 static bool profile_event_match(struct perf_kwork *kwork, in profile_event_match() argument
425 struct perf_time_interval *ptime = &kwork->ptime; in profile_event_match()
427 if ((kwork->cpu_list != NULL) && !test_bit(cpu, kwork->cpu_bitmap)) in profile_event_match()
438 if ((kwork->report != KWORK_REPORT_TOP) && in profile_event_match()
439 !profile_name_match(kwork, work)) { in profile_event_match()
443 profile_update_timespan(kwork, sample); in profile_event_match()
447 static int work_push_atom(struct perf_kwork *kwork, in work_push_atom() argument
461 class->work_init(kwork, class, &key, src_type, evsel, sample, machine); in work_push_atom()
463 atom = atom_new(kwork, sample); in work_push_atom()
467 work = work_findnew(&class->work_root, &key, &kwork->cmp_id); in work_push_atom()
473 if (!profile_event_match(kwork, work, sample)) { in work_push_atom()
496 kwork->nr_skipped_events[src_type]++; in work_push_atom()
497 kwork->nr_skipped_events[KWORK_TRACE_MAX]++; in work_push_atom()
506 static struct kwork_atom *work_pop_atom(struct perf_kwork *kwork, in work_pop_atom() argument
519 class->work_init(kwork, class, &key, src_type, evsel, sample, machine); in work_pop_atom()
521 work = work_findnew(&class->work_root, &key, &kwork->cmp_id); in work_pop_atom()
528 if (!profile_event_match(kwork, work, sample)) in work_pop_atom()
536 src_atom = atom_new(kwork, sample); in work_pop_atom()
566 static struct kwork_class *get_kwork_class(struct perf_kwork *kwork, in get_kwork_class() argument
571 list_for_each_entry(class, &kwork->class_list, list) { in get_kwork_class()
600 static int report_entry_event(struct perf_kwork *kwork, in report_entry_event() argument
606 return work_push_atom(kwork, class, KWORK_TRACE_ENTRY, in report_entry_event()
611 static int report_exit_event(struct perf_kwork *kwork, in report_exit_event() argument
620 atom = work_pop_atom(kwork, class, KWORK_TRACE_EXIT, in report_exit_event()
655 static int latency_raise_event(struct perf_kwork *kwork, in latency_raise_event() argument
661 return work_push_atom(kwork, class, KWORK_TRACE_RAISE, in latency_raise_event()
666 static int latency_entry_event(struct perf_kwork *kwork, in latency_entry_event() argument
675 atom = work_pop_atom(kwork, class, KWORK_TRACE_ENTRY, in latency_entry_event()
689 static void timehist_save_callchain(struct perf_kwork *kwork, in timehist_save_callchain() argument
699 if (!kwork->show_callchain || sample->callchain == NULL) in timehist_save_callchain()
712 NULL, NULL, kwork->max_stack + 2) != 0) { in timehist_save_callchain()
738 static void timehist_print_event(struct perf_kwork *kwork, in timehist_print_event() argument
795 if (kwork->show_callchain) { in timehist_print_event()
814 static int timehist_raise_event(struct perf_kwork *kwork, in timehist_raise_event() argument
820 return work_push_atom(kwork, class, KWORK_TRACE_RAISE, in timehist_raise_event()
825 static int timehist_entry_event(struct perf_kwork *kwork, in timehist_entry_event() argument
834 ret = work_push_atom(kwork, class, KWORK_TRACE_ENTRY, in timehist_entry_event()
841 timehist_save_callchain(kwork, sample, evsel, machine); in timehist_entry_event()
846 static int timehist_exit_event(struct perf_kwork *kwork, in timehist_exit_event() argument
864 atom = work_pop_atom(kwork, class, KWORK_TRACE_EXIT, in timehist_exit_event()
874 timehist_print_event(kwork, work, atom, sample, &al); in timehist_exit_event()
897 static int top_entry_event(struct perf_kwork *kwork, in top_entry_event() argument
903 return work_push_atom(kwork, class, KWORK_TRACE_ENTRY, in top_entry_event()
908 static int top_exit_event(struct perf_kwork *kwork, in top_exit_event() argument
918 atom = work_pop_atom(kwork, class, KWORK_TRACE_EXIT, in top_exit_event()
925 sched_class = get_kwork_class(kwork, KWORK_CLASS_SCHED); in top_exit_event()
938 static int top_sched_switch_event(struct perf_kwork *kwork, in top_sched_switch_event() argument
947 atom = work_pop_atom(kwork, class, KWORK_TRACE_EXIT, in top_sched_switch_event()
958 return top_entry_event(kwork, class, evsel, sample, machine); in top_sched_switch_event()
967 struct perf_kwork *kwork = container_of(tool, struct perf_kwork, tool); in process_irq_handler_entry_event() local
969 if (kwork->tp_handler->entry_event) in process_irq_handler_entry_event()
970 return kwork->tp_handler->entry_event(kwork, &kwork_irq, in process_irq_handler_entry_event()
980 struct perf_kwork *kwork = container_of(tool, struct perf_kwork, tool); in process_irq_handler_exit_event() local
982 if (kwork->tp_handler->exit_event) in process_irq_handler_exit_event()
983 return kwork->tp_handler->exit_event(kwork, &kwork_irq, in process_irq_handler_exit_event()
1005 static void irq_work_init(struct perf_kwork *kwork, in irq_work_init() argument
1016 if (kwork->report == KWORK_REPORT_TOP) { in irq_work_init()
1046 struct perf_kwork *kwork = container_of(tool, struct perf_kwork, tool); in process_softirq_raise_event() local
1048 if (kwork->tp_handler->raise_event) in process_softirq_raise_event()
1049 return kwork->tp_handler->raise_event(kwork, &kwork_softirq, in process_softirq_raise_event()
1060 struct perf_kwork *kwork = container_of(tool, struct perf_kwork, tool); in process_softirq_entry_event() local
1062 if (kwork->tp_handler->entry_event) in process_softirq_entry_event()
1063 return kwork->tp_handler->entry_event(kwork, &kwork_softirq, in process_softirq_entry_event()
1074 struct perf_kwork *kwork = container_of(tool, struct perf_kwork, tool); in process_softirq_exit_event() local
1076 if (kwork->tp_handler->exit_event) in process_softirq_exit_event()
1077 return kwork->tp_handler->exit_event(kwork, &kwork_softirq, in process_softirq_exit_event()
1133 static void softirq_work_init(struct perf_kwork *kwork, in softirq_work_init() argument
1146 if (kwork->report == KWORK_REPORT_TOP) { in softirq_work_init()
1177 struct perf_kwork *kwork = container_of(tool, struct perf_kwork, tool); in process_workqueue_activate_work_event() local
1179 if (kwork->tp_handler->raise_event) in process_workqueue_activate_work_event()
1180 return kwork->tp_handler->raise_event(kwork, &kwork_workqueue, in process_workqueue_activate_work_event()
1191 struct perf_kwork *kwork = container_of(tool, struct perf_kwork, tool); in process_workqueue_execute_start_event() local
1193 if (kwork->tp_handler->entry_event) in process_workqueue_execute_start_event()
1194 return kwork->tp_handler->entry_event(kwork, &kwork_workqueue, in process_workqueue_execute_start_event()
1205 struct perf_kwork *kwork = container_of(tool, struct perf_kwork, tool); in process_workqueue_execute_end_event() local
1207 if (kwork->tp_handler->exit_event) in process_workqueue_execute_end_event()
1208 return kwork->tp_handler->exit_event(kwork, &kwork_workqueue, in process_workqueue_execute_end_event()
1233 static void workqueue_work_init(struct perf_kwork *kwork __maybe_unused, in workqueue_work_init()
1276 struct perf_kwork *kwork = container_of(tool, struct perf_kwork, tool); in process_sched_switch_event() local
1278 if (kwork->tp_handler->sched_switch_event) in process_sched_switch_event()
1279 return kwork->tp_handler->sched_switch_event(kwork, &kwork_sched, in process_sched_switch_event()
1301 static void sched_work_init(struct perf_kwork *kwork __maybe_unused, in sched_work_init()
1348 static int report_print_work(struct perf_kwork *kwork, struct kwork_work *work) in report_print_work() argument
1376 if (kwork->report == KWORK_REPORT_RUNTIME) { in report_print_work()
1380 } else if (kwork->report == KWORK_REPORT_LATENCY) { // avg delay in report_print_work()
1395 if (kwork->report == KWORK_REPORT_RUNTIME) { in report_print_work()
1411 else if (kwork->report == KWORK_REPORT_LATENCY) { in report_print_work()
1429 static int report_print_header(struct perf_kwork *kwork) in report_print_header() argument
1438 if (kwork->report == KWORK_REPORT_RUNTIME) { in report_print_header()
1441 } else if (kwork->report == KWORK_REPORT_LATENCY) { in report_print_header()
1448 if (kwork->report == KWORK_REPORT_RUNTIME) { in report_print_header()
1453 } else if (kwork->report == KWORK_REPORT_LATENCY) { in report_print_header()
1501 static void print_summary(struct perf_kwork *kwork) in print_summary() argument
1503 u64 time = kwork->timeend - kwork->timestart; in print_summary()
1505 printf(" Total count : %9" PRIu64 "\n", kwork->all_count); in print_summary()
1507 (double)kwork->all_runtime / NSEC_PER_MSEC, in print_summary()
1508 time == 0 ? 0 : (double)kwork->all_runtime / time); in print_summary()
1524 static void print_skipped_events(struct perf_kwork *kwork) in print_skipped_events() argument
1533 if ((kwork->nr_skipped_events[KWORK_TRACE_MAX] != 0) && in print_skipped_events()
1534 (kwork->nr_events != 0)) { in print_skipped_events()
1536 (double)kwork->nr_skipped_events[KWORK_TRACE_MAX] / in print_skipped_events()
1537 (double)kwork->nr_events * 100.0, in print_skipped_events()
1538 kwork->nr_skipped_events[KWORK_TRACE_MAX]); in print_skipped_events()
1542 kwork->nr_skipped_events[i], in print_skipped_events()
1550 nr_list_entry(&kwork->atom_page_list)); in print_skipped_events()
1553 static void print_bad_events(struct perf_kwork *kwork) in print_bad_events() argument
1555 if ((kwork->nr_lost_events != 0) && (kwork->nr_events != 0)) { in print_bad_events()
1557 (double)kwork->nr_lost_events / in print_bad_events()
1558 (double)kwork->nr_events * 100.0, in print_bad_events()
1559 kwork->nr_lost_events, kwork->nr_events, in print_bad_events()
1560 kwork->nr_lost_chunks); in print_bad_events()
1566 static void top_print_per_cpu_load(struct perf_kwork *kwork) in top_print_per_cpu_load() argument
1570 struct kwork_top_stat *stat = &kwork->top_stat; in top_print_per_cpu_load()
1592 static void top_print_cpu_usage(struct perf_kwork *kwork) in top_print_cpu_usage() argument
1594 struct kwork_top_stat *stat = &kwork->top_stat; in top_print_cpu_usage()
1616 top_print_per_cpu_load(kwork); in top_print_cpu_usage()
1619 static void top_print_header(struct perf_kwork *kwork __maybe_unused) in top_print_header()
1627 kwork->use_bpf ? " " : "", in top_print_header()
1628 kwork->use_bpf ? PRINT_PID_WIDTH : 0, in top_print_header()
1629 kwork->use_bpf ? "SPID" : "", in top_print_header()
1630 kwork->use_bpf ? " " : "", in top_print_header()
1639 static int top_print_work(struct perf_kwork *kwork __maybe_unused, struct kwork_work *work) in top_print_work()
1653 if (kwork->use_bpf) in top_print_work()
1673 if (kwork->use_bpf) in top_print_work()
1685 static void work_sort(struct perf_kwork *kwork, in work_sort() argument
1699 work_insert(&kwork->sorted_work_root, in work_sort()
1700 data, &kwork->sort_list); in work_sort()
1704 static void perf_kwork__sort(struct perf_kwork *kwork) in perf_kwork__sort() argument
1708 list_for_each_entry(class, &kwork->class_list, list) in perf_kwork__sort()
1709 work_sort(kwork, class, &class->work_root); in perf_kwork__sort()
1712 static int perf_kwork__check_config(struct perf_kwork *kwork, in perf_kwork__check_config() argument
1738 switch (kwork->report) { in perf_kwork__check_config()
1740 kwork->tp_handler = &report_ops; in perf_kwork__check_config()
1743 kwork->tp_handler = &latency_ops; in perf_kwork__check_config()
1746 kwork->tp_handler = &timehist_ops; in perf_kwork__check_config()
1749 kwork->tp_handler = &top_ops; in perf_kwork__check_config()
1752 pr_debug("Invalid report type %d\n", kwork->report); in perf_kwork__check_config()
1756 list_for_each_entry(class, &kwork->class_list, list) in perf_kwork__check_config()
1761 if (kwork->cpu_list != NULL) { in perf_kwork__check_config()
1763 kwork->cpu_list, in perf_kwork__check_config()
1764 kwork->cpu_bitmap); in perf_kwork__check_config()
1771 if (kwork->time_str != NULL) { in perf_kwork__check_config()
1772 ret = perf_time__parse_str(&kwork->ptime, kwork->time_str); in perf_kwork__check_config()
1780 if (kwork->show_callchain && !evsel__has_callchain(evsel)) { in perf_kwork__check_config()
1782 kwork->show_callchain = 0; in perf_kwork__check_config()
1790 static int perf_kwork__read_events(struct perf_kwork *kwork) in perf_kwork__read_events() argument
1798 .force = kwork->force, in perf_kwork__read_events()
1801 session = perf_session__new(&data, &kwork->tool); in perf_kwork__read_events()
1809 if (perf_kwork__check_config(kwork, session) != 0) in perf_kwork__read_events()
1820 if (kwork->report == KWORK_REPORT_TIMEHIST) in perf_kwork__read_events()
1829 kwork->nr_events = session->evlist->stats.nr_events[0]; in perf_kwork__read_events()
1830 kwork->nr_lost_events = session->evlist->stats.total_lost; in perf_kwork__read_events()
1831 kwork->nr_lost_chunks = session->evlist->stats.nr_events[PERF_RECORD_LOST]; in perf_kwork__read_events()
1838 static void process_skipped_events(struct perf_kwork *kwork, in process_skipped_events() argument
1846 kwork->nr_skipped_events[i] += count; in process_skipped_events()
1847 kwork->nr_skipped_events[KWORK_TRACE_MAX] += count; in process_skipped_events()
1851 static struct kwork_work *perf_kwork_add_work(struct perf_kwork *kwork, in perf_kwork_add_work() argument
1861 work_insert(&class->work_root, work, &kwork->cmp_id); in perf_kwork_add_work()
1874 static int perf_kwork__report_bpf(struct perf_kwork *kwork) in perf_kwork__report_bpf() argument
1881 ret = perf_kwork__trace_prepare_bpf(kwork); in perf_kwork__report_bpf()
1896 perf_kwork__report_read_bpf(kwork); in perf_kwork__report_bpf()
1903 static int perf_kwork__report(struct perf_kwork *kwork) in perf_kwork__report() argument
1909 if (kwork->use_bpf) in perf_kwork__report()
1910 ret = perf_kwork__report_bpf(kwork); in perf_kwork__report()
1912 ret = perf_kwork__read_events(kwork); in perf_kwork__report()
1917 perf_kwork__sort(kwork); in perf_kwork__report()
1921 ret = report_print_header(kwork); in perf_kwork__report()
1922 next = rb_first_cached(&kwork->sorted_work_root); in perf_kwork__report()
1925 process_skipped_events(kwork, work); in perf_kwork__report()
1928 report_print_work(kwork, work); in perf_kwork__report()
1929 if (kwork->summary) { in perf_kwork__report()
1930 kwork->all_runtime += work->total_runtime; in perf_kwork__report()
1931 kwork->all_count += work->nr_atoms; in perf_kwork__report()
1938 if (kwork->summary) { in perf_kwork__report()
1939 print_summary(kwork); in perf_kwork__report()
1943 print_bad_events(kwork); in perf_kwork__report()
1944 print_skipped_events(kwork); in perf_kwork__report()
1972 static int perf_kwork__timehist(struct perf_kwork *kwork) in perf_kwork__timehist() argument
1977 kwork->tool.comm = perf_event__process_comm; in perf_kwork__timehist()
1978 kwork->tool.exit = perf_event__process_exit; in perf_kwork__timehist()
1979 kwork->tool.fork = perf_event__process_fork; in perf_kwork__timehist()
1980 kwork->tool.attr = perf_event__process_attr; in perf_kwork__timehist()
1981 kwork->tool.tracing_data = perf_event__process_tracing_data; in perf_kwork__timehist()
1982 kwork->tool.build_id = perf_event__process_build_id; in perf_kwork__timehist()
1983 kwork->tool.ordered_events = true; in perf_kwork__timehist()
1984 kwork->tool.ordering_requires_timestamps = true; in perf_kwork__timehist()
1985 symbol_conf.use_callchain = kwork->show_callchain; in perf_kwork__timehist()
1994 return perf_kwork__read_events(kwork); in perf_kwork__timehist()
1997 static void top_calc_total_runtime(struct perf_kwork *kwork) in top_calc_total_runtime() argument
2002 struct kwork_top_stat *stat = &kwork->top_stat; in top_calc_total_runtime()
2004 class = get_kwork_class(kwork, KWORK_CLASS_SCHED); in top_calc_total_runtime()
2018 static void top_calc_idle_time(struct perf_kwork *kwork, in top_calc_idle_time() argument
2021 struct kwork_top_stat *stat = &kwork->top_stat; in top_calc_idle_time()
2029 static void top_calc_irq_runtime(struct perf_kwork *kwork, in top_calc_irq_runtime() argument
2033 struct kwork_top_stat *stat = &kwork->top_stat; in top_calc_irq_runtime()
2044 static void top_subtract_irq_runtime(struct perf_kwork *kwork, in top_subtract_irq_runtime() argument
2053 class = get_kwork_class(kwork, irq_class_list[i]); in top_subtract_irq_runtime()
2064 top_calc_irq_runtime(kwork, irq_class_list[i], data); in top_subtract_irq_runtime()
2069 static void top_calc_cpu_usage(struct perf_kwork *kwork) in top_calc_cpu_usage() argument
2074 struct kwork_top_stat *stat = &kwork->top_stat; in top_calc_cpu_usage()
2076 class = get_kwork_class(kwork, KWORK_CLASS_SCHED); in top_calc_cpu_usage()
2089 top_subtract_irq_runtime(kwork, work); in top_calc_cpu_usage()
2094 top_calc_idle_time(kwork, work); in top_calc_cpu_usage()
2100 static void top_calc_load_runtime(struct perf_kwork *kwork, in top_calc_load_runtime() argument
2103 struct kwork_top_stat *stat = &kwork->top_stat; in top_calc_load_runtime()
2111 static void top_merge_tasks(struct perf_kwork *kwork) in top_merge_tasks() argument
2119 class = get_kwork_class(kwork, KWORK_CLASS_SCHED); in top_merge_tasks()
2131 if (!profile_name_match(kwork, data)) in top_merge_tasks()
2138 work_insert(&merged_root, data, &kwork->cmp_id); in top_merge_tasks()
2144 top_calc_load_runtime(kwork, data); in top_merge_tasks()
2147 work_sort(kwork, class, &merged_root); in top_merge_tasks()
2150 static void perf_kwork__top_report(struct perf_kwork *kwork) in perf_kwork__top_report() argument
2157 top_print_cpu_usage(kwork); in perf_kwork__top_report()
2158 top_print_header(kwork); in perf_kwork__top_report()
2159 next = rb_first_cached(&kwork->sorted_work_root); in perf_kwork__top_report()
2162 process_skipped_events(kwork, work); in perf_kwork__top_report()
2167 top_print_work(kwork, work); in perf_kwork__top_report()
2176 static int perf_kwork__top_bpf(struct perf_kwork *kwork) in perf_kwork__top_bpf() argument
2183 ret = perf_kwork__top_prepare_bpf(kwork); in perf_kwork__top_bpf()
2198 perf_kwork__top_read_bpf(kwork); in perf_kwork__top_bpf()
2206 static int perf_kwork__top(struct perf_kwork *kwork) in perf_kwork__top() argument
2215 kwork->top_stat.cpus_runtime = cpus_runtime; in perf_kwork__top()
2216 bitmap_zero(kwork->top_stat.all_cpus_bitmap, MAX_NR_CPUS); in perf_kwork__top()
2218 if (kwork->use_bpf) in perf_kwork__top()
2219 ret = perf_kwork__top_bpf(kwork); in perf_kwork__top()
2221 ret = perf_kwork__read_events(kwork); in perf_kwork__top()
2226 top_calc_total_runtime(kwork); in perf_kwork__top()
2227 top_calc_cpu_usage(kwork); in perf_kwork__top()
2228 top_merge_tasks(kwork); in perf_kwork__top()
2232 perf_kwork__top_report(kwork); in perf_kwork__top()
2235 zfree(&kwork->top_stat.cpus_runtime); in perf_kwork__top()
2239 static void setup_event_list(struct perf_kwork *kwork, in setup_event_list() argument
2250 if (kwork->event_list_str == NULL) in setup_event_list()
2251 kwork->event_list_str = "irq, softirq, workqueue"; in setup_event_list()
2253 str = strdup(kwork->event_list_str); in setup_event_list()
2259 list_add_tail(&class->list, &kwork->class_list); in setup_event_list()
2271 list_for_each_entry(class, &kwork->class_list, list) in setup_event_list()
2286 static int perf_kwork__record(struct perf_kwork *kwork, in perf_kwork__record() argument
2304 list_for_each_entry(class, &kwork->class_list, list) in perf_kwork__record()
2314 list_for_each_entry(class, &kwork->class_list, list) { in perf_kwork__record()
2342 static struct perf_kwork kwork = { in cmd_kwork() local
2343 .class_list = LIST_HEAD_INIT(kwork.class_list), in cmd_kwork()
2344 .atom_page_list = LIST_HEAD_INIT(kwork.atom_page_list), in cmd_kwork()
2345 .sort_list = LIST_HEAD_INIT(kwork.sort_list), in cmd_kwork()
2346 .cmp_id = LIST_HEAD_INIT(kwork.cmp_id), in cmd_kwork()
2376 OPT_STRING('k', "kwork", &kwork.event_list_str, "kwork", in cmd_kwork()
2378 OPT_BOOLEAN('f', "force", &kwork.force, "don't complain, do it"), in cmd_kwork()
2382 OPT_STRING('s', "sort", &kwork.sort_order, "key[,key2...]", in cmd_kwork()
2384 OPT_STRING('C', "cpu", &kwork.cpu_list, "cpu", in cmd_kwork()
2386 OPT_STRING('n', "name", &kwork.profile_name, "name", in cmd_kwork()
2388 OPT_STRING(0, "time", &kwork.time_str, "str", in cmd_kwork()
2392 OPT_BOOLEAN('S', "with-summary", &kwork.summary, in cmd_kwork()
2395 OPT_BOOLEAN('b', "use-bpf", &kwork.use_bpf, in cmd_kwork()
2401 OPT_STRING('s', "sort", &kwork.sort_order, "key[,key2...]", in cmd_kwork()
2403 OPT_STRING('C', "cpu", &kwork.cpu_list, "cpu", in cmd_kwork()
2405 OPT_STRING('n', "name", &kwork.profile_name, "name", in cmd_kwork()
2407 OPT_STRING(0, "time", &kwork.time_str, "str", in cmd_kwork()
2412 OPT_BOOLEAN('b', "use-bpf", &kwork.use_bpf, in cmd_kwork()
2422 OPT_BOOLEAN('g', "call-graph", &kwork.show_callchain, in cmd_kwork()
2424 OPT_UINTEGER(0, "max-stack", &kwork.max_stack, in cmd_kwork()
2428 OPT_STRING(0, "time", &kwork.time_str, "str", in cmd_kwork()
2430 OPT_STRING('C', "cpu", &kwork.cpu_list, "cpu", in cmd_kwork()
2432 OPT_STRING('n', "name", &kwork.profile_name, "name", in cmd_kwork()
2439 OPT_STRING('s', "sort", &kwork.sort_order, "key[,key2...]", in cmd_kwork()
2441 OPT_STRING('C', "cpu", &kwork.cpu_list, "cpu", in cmd_kwork()
2443 OPT_STRING('n', "name", &kwork.profile_name, "name", in cmd_kwork()
2445 OPT_STRING(0, "time", &kwork.time_str, "str", in cmd_kwork()
2450 OPT_BOOLEAN('b', "use-bpf", &kwork.use_bpf, in cmd_kwork()
2479 perf_tool__init(&kwork.tool, /*ordered_events=*/true); in cmd_kwork()
2480 kwork.tool.mmap = perf_event__process_mmap; in cmd_kwork()
2481 kwork.tool.mmap2 = perf_event__process_mmap2; in cmd_kwork()
2482 kwork.tool.sample = perf_kwork__process_tracepoint_sample; in cmd_kwork()
2490 sort_dimension__add(&kwork, "id", &kwork.cmp_id); in cmd_kwork()
2493 setup_event_list(&kwork, kwork_options, kwork_usage); in cmd_kwork()
2494 return perf_kwork__record(&kwork, argc, argv); in cmd_kwork()
2496 kwork.sort_order = default_report_sort_order; in cmd_kwork()
2502 kwork.report = KWORK_REPORT_RUNTIME; in cmd_kwork()
2503 setup_sorting(&kwork, report_options, report_usage); in cmd_kwork()
2504 setup_event_list(&kwork, kwork_options, kwork_usage); in cmd_kwork()
2505 return perf_kwork__report(&kwork); in cmd_kwork()
2507 kwork.sort_order = default_latency_sort_order; in cmd_kwork()
2513 kwork.report = KWORK_REPORT_LATENCY; in cmd_kwork()
2514 setup_sorting(&kwork, latency_options, latency_usage); in cmd_kwork()
2515 setup_event_list(&kwork, kwork_options, kwork_usage); in cmd_kwork()
2516 return perf_kwork__report(&kwork); in cmd_kwork()
2523 kwork.report = KWORK_REPORT_TIMEHIST; in cmd_kwork()
2524 setup_event_list(&kwork, kwork_options, kwork_usage); in cmd_kwork()
2525 return perf_kwork__timehist(&kwork); in cmd_kwork()
2527 kwork.sort_order = default_top_sort_order; in cmd_kwork()
2533 kwork.report = KWORK_REPORT_TOP; in cmd_kwork()
2534 if (!kwork.event_list_str) in cmd_kwork()
2535 kwork.event_list_str = "sched, irq, softirq"; in cmd_kwork()
2536 setup_event_list(&kwork, kwork_options, kwork_usage); in cmd_kwork()
2537 setup_sorting(&kwork, top_options, top_usage); in cmd_kwork()
2538 return perf_kwork__top(&kwork); in cmd_kwork()