Lines Matching defs:kwork

18 #include "util/kwork.h"
47 void (*load_prepare)(struct perf_kwork *kwork);
91 static void irq_load_prepare(struct perf_kwork *kwork)
93 if (kwork->report == KWORK_REPORT_RUNTIME) {
104 static void softirq_load_prepare(struct perf_kwork *kwork)
106 if (kwork->report == KWORK_REPORT_RUNTIME) {
109 } else if (kwork->report == KWORK_REPORT_LATENCY) {
120 static void workqueue_load_prepare(struct perf_kwork *kwork)
122 if (kwork->report == KWORK_REPORT_RUNTIME) {
125 } else if (kwork->report == KWORK_REPORT_LATENCY) {
148 static int setup_filters(struct perf_kwork *kwork)
154 if (kwork->cpu_list != NULL) {
161 map = perf_cpu_map__new(kwork->cpu_list);
183 if (kwork->profile_name != NULL) {
184 if (strlen(kwork->profile_name) >= MAX_KWORKNAME) {
186 kwork->profile_name, MAX_KWORKNAME - 1);
197 bpf_map_update_elem(fd, &key, kwork->profile_name, BPF_ANY);
205 int perf_kwork__trace_prepare_bpf(struct perf_kwork *kwork)
214 pr_debug("Failed to open kwork trace skeleton\n");
225 list_for_each_entry(class, &kwork->class_list, list) {
237 class_bpf->load_prepare(kwork);
241 pr_debug("Failed to load kwork trace skeleton\n");
245 if (setup_filters(kwork))
249 pr_debug("Failed to attach kwork trace skeleton\n");
260 static int add_work(struct perf_kwork *kwork,
285 work = perf_kwork_add_work(kwork, tmp.class, &tmp);
289 if (kwork->report == KWORK_REPORT_RUNTIME) {
295 } else if (kwork->report == KWORK_REPORT_LATENCY) {
302 pr_debug("Invalid bpf report type %d\n", kwork->report);
306 kwork->timestart = (u64)ts_start.tv_sec * NSEC_PER_SEC + ts_start.tv_nsec;
307 kwork->timeend = (u64)ts_end.tv_sec * NSEC_PER_SEC + ts_end.tv_nsec;
312 int perf_kwork__report_read_bpf(struct perf_kwork *kwork)
338 if ((data.nr != 0) && (add_work(kwork, &key, &data) != 0))