Lines Matching refs:evlist

76 void evlist__init(struct evlist *evlist, struct perf_cpu_map *cpus,  in evlist__init()  argument
79 perf_evlist__init(&evlist->core); in evlist__init()
80 perf_evlist__set_maps(&evlist->core, cpus, threads); in evlist__init()
81 evlist->workload.pid = -1; in evlist__init()
82 evlist->bkw_mmap_state = BKW_MMAP_NOTREADY; in evlist__init()
83 evlist->ctl_fd.fd = -1; in evlist__init()
84 evlist->ctl_fd.ack = -1; in evlist__init()
85 evlist->ctl_fd.pos = -1; in evlist__init()
86 evlist->nr_br_cntr = -1; in evlist__init()
87 metricgroup__rblist_init(&evlist->metric_events); in evlist__init()
90 struct evlist *evlist__new(void) in evlist__new()
92 struct evlist *evlist = zalloc(sizeof(*evlist)); in evlist__new() local
94 if (evlist != NULL) in evlist__new()
95 evlist__init(evlist, NULL, NULL); in evlist__new()
97 return evlist; in evlist__new()
100 struct evlist *evlist__new_default(void) in evlist__new_default()
102 struct evlist *evlist = evlist__new(); in evlist__new_default() local
106 if (!evlist) in evlist__new_default()
110 err = parse_event(evlist, can_profile_kernel ? "cycles:P" : "cycles:Pu"); in evlist__new_default()
112 evlist__delete(evlist); in evlist__new_default()
116 if (evlist->core.nr_entries > 1) { in evlist__new_default()
119 evlist__for_each_entry(evlist, evsel) in evlist__new_default()
123 return evlist; in evlist__new_default()
126 struct evlist *evlist__new_dummy(void) in evlist__new_dummy()
128 struct evlist *evlist = evlist__new(); in evlist__new_dummy() local
130 if (evlist && evlist__add_dummy(evlist)) { in evlist__new_dummy()
131 evlist__delete(evlist); in evlist__new_dummy()
132 evlist = NULL; in evlist__new_dummy()
135 return evlist; in evlist__new_dummy()
145 void evlist__set_id_pos(struct evlist *evlist) in evlist__set_id_pos() argument
147 struct evsel *first = evlist__first(evlist); in evlist__set_id_pos()
149 evlist->id_pos = first->id_pos; in evlist__set_id_pos()
150 evlist->is_pos = first->is_pos; in evlist__set_id_pos()
153 static void evlist__update_id_pos(struct evlist *evlist) in evlist__update_id_pos() argument
157 evlist__for_each_entry(evlist, evsel) in evlist__update_id_pos()
160 evlist__set_id_pos(evlist); in evlist__update_id_pos()
163 static void evlist__purge(struct evlist *evlist) in evlist__purge() argument
167 evlist__for_each_entry_safe(evlist, n, pos) { in evlist__purge()
169 pos->evlist = NULL; in evlist__purge()
173 evlist->core.nr_entries = 0; in evlist__purge()
176 void evlist__exit(struct evlist *evlist) in evlist__exit() argument
178 metricgroup__rblist_exit(&evlist->metric_events); in evlist__exit()
179 event_enable_timer__exit(&evlist->eet); in evlist__exit()
180 zfree(&evlist->mmap); in evlist__exit()
181 zfree(&evlist->overwrite_mmap); in evlist__exit()
182 perf_evlist__exit(&evlist->core); in evlist__exit()
185 void evlist__delete(struct evlist *evlist) in evlist__delete() argument
187 if (evlist == NULL) in evlist__delete()
190 evlist__free_stats(evlist); in evlist__delete()
191 evlist__munmap(evlist); in evlist__delete()
192 evlist__close(evlist); in evlist__delete()
193 evlist__purge(evlist); in evlist__delete()
194 evlist__exit(evlist); in evlist__delete()
195 free(evlist); in evlist__delete()
198 void evlist__add(struct evlist *evlist, struct evsel *entry) in evlist__add() argument
200 perf_evlist__add(&evlist->core, &entry->core); in evlist__add()
201 entry->evlist = evlist; in evlist__add()
204 if (evlist->core.nr_entries == 1) in evlist__add()
205 evlist__set_id_pos(evlist); in evlist__add()
208 void evlist__remove(struct evlist *evlist, struct evsel *evsel) in evlist__remove() argument
210 evsel->evlist = NULL; in evlist__remove()
211 perf_evlist__remove(&evlist->core, &evsel->core); in evlist__remove()
214 void evlist__splice_list_tail(struct evlist *evlist, struct list_head *list) in evlist__splice_list_tail() argument
221 evlist__add(evlist, evsel); in evlist__splice_list_tail()
229 evlist__add(evlist, evsel); in evlist__splice_list_tail()
235 int __evlist__set_tracepoints_handlers(struct evlist *evlist, in __evlist__set_tracepoints_handlers() argument
243 struct evsel *evsel = evlist__find_tracepoint_by_name(evlist, assocs[i].name); in __evlist__set_tracepoints_handlers()
258 static void evlist__set_leader(struct evlist *evlist) in evlist__set_leader() argument
260 perf_evlist__set_leader(&evlist->core); in evlist__set_leader()
263 static struct evsel *evlist__dummy_event(struct evlist *evlist) in evlist__dummy_event() argument
274 return evsel__new_idx(&attr, evlist->core.nr_entries); in evlist__dummy_event()
277 int evlist__add_dummy(struct evlist *evlist) in evlist__add_dummy() argument
279 struct evsel *evsel = evlist__dummy_event(evlist); in evlist__add_dummy()
284 evlist__add(evlist, evsel); in evlist__add_dummy()
288 struct evsel *evlist__add_aux_dummy(struct evlist *evlist, bool system_wide) in evlist__add_aux_dummy() argument
290 struct evsel *evsel = evlist__dummy_event(evlist); in evlist__add_aux_dummy()
302 evlist__add(evlist, evsel); in evlist__add_aux_dummy()
307 struct evsel *evlist__add_sched_switch(struct evlist *evlist, bool system_wide) in evlist__add_sched_switch() argument
321 evlist__add(evlist, evsel); in evlist__add_sched_switch()
326 struct evsel *evlist__find_tracepoint_by_name(struct evlist *evlist, const char *name) in evlist__find_tracepoint_by_name() argument
330 evlist__for_each_entry(evlist, evsel) { in evlist__find_tracepoint_by_name()
340 int evlist__add_newtp(struct evlist *evlist, const char *sys, const char *name, void *handler) in evlist__add_newtp() argument
348 evlist__add(evlist, evsel); in evlist__add_newtp()
353 struct evlist_cpu_iterator evlist__cpu_begin(struct evlist *evlist, struct affinity *affinity) in evlist__cpu_begin() argument
356 .container = evlist, in evlist__cpu_begin()
360 .evlist_cpu_map_nr = perf_cpu_map__nr(evlist->core.all_cpus), in evlist__cpu_begin()
365 if (evlist__empty(evlist)) { in evlist__cpu_begin()
369 itr.evsel = evlist__first(evlist); in evlist__cpu_begin()
371 itr.cpu = perf_cpu_map__cpu(evlist->core.all_cpus, 0); in evlist__cpu_begin()
429 static int evlist__is_enabled(struct evlist *evlist) in evlist__is_enabled() argument
433 evlist__for_each_entry(evlist, pos) { in evlist__is_enabled()
443 static void __evlist__disable(struct evlist *evlist, char *evsel_name, bool excl_dummy) in __evlist__disable() argument
451 if (!cpu_map__is_dummy(evlist->core.user_requested_cpus)) { in __evlist__disable()
459 evlist__for_each_cpu(evlist_cpu_itr, evlist, affinity) { in __evlist__disable()
478 evlist__for_each_entry(evlist, pos) { in __evlist__disable()
493 evlist->enabled = evlist__is_enabled(evlist); in __evlist__disable()
495 evlist->enabled = false; in __evlist__disable()
498 void evlist__disable(struct evlist *evlist) in evlist__disable() argument
500 __evlist__disable(evlist, NULL, false); in evlist__disable()
503 void evlist__disable_non_dummy(struct evlist *evlist) in evlist__disable_non_dummy() argument
505 __evlist__disable(evlist, NULL, true); in evlist__disable_non_dummy()
508 void evlist__disable_evsel(struct evlist *evlist, char *evsel_name) in evlist__disable_evsel() argument
510 __evlist__disable(evlist, evsel_name, false); in evlist__disable_evsel()
513 static void __evlist__enable(struct evlist *evlist, char *evsel_name, bool excl_dummy) in __evlist__enable() argument
520 if (!cpu_map__is_dummy(evlist->core.user_requested_cpus)) { in __evlist__enable()
526 evlist__for_each_cpu(evlist_cpu_itr, evlist, affinity) { in __evlist__enable()
537 evlist__for_each_entry(evlist, pos) { in __evlist__enable()
552 evlist->enabled = true; in __evlist__enable()
555 void evlist__enable(struct evlist *evlist) in evlist__enable() argument
557 __evlist__enable(evlist, NULL, false); in evlist__enable()
560 void evlist__enable_non_dummy(struct evlist *evlist) in evlist__enable_non_dummy() argument
562 __evlist__enable(evlist, NULL, true); in evlist__enable_non_dummy()
565 void evlist__enable_evsel(struct evlist *evlist, char *evsel_name) in evlist__enable_evsel() argument
567 __evlist__enable(evlist, evsel_name, false); in evlist__enable_evsel()
570 void evlist__toggle_enable(struct evlist *evlist) in evlist__toggle_enable() argument
572 (evlist->enabled ? evlist__disable : evlist__enable)(evlist); in evlist__toggle_enable()
575 int evlist__add_pollfd(struct evlist *evlist, int fd) in evlist__add_pollfd() argument
577 return perf_evlist__add_pollfd(&evlist->core, fd, NULL, POLLIN, fdarray_flag__default); in evlist__add_pollfd()
580 int evlist__filter_pollfd(struct evlist *evlist, short revents_and_mask) in evlist__filter_pollfd() argument
582 return perf_evlist__filter_pollfd(&evlist->core, revents_and_mask); in evlist__filter_pollfd()
586 int evlist__add_wakeup_eventfd(struct evlist *evlist, int fd) in evlist__add_wakeup_eventfd() argument
588 return perf_evlist__add_pollfd(&evlist->core, fd, NULL, POLLIN, in evlist__add_wakeup_eventfd()
594 int evlist__poll(struct evlist *evlist, int timeout) in evlist__poll() argument
596 return perf_evlist__poll(&evlist->core, timeout); in evlist__poll()
599 struct perf_sample_id *evlist__id2sid(struct evlist *evlist, u64 id) in evlist__id2sid() argument
606 head = &evlist->core.heads[hash]; in evlist__id2sid()
615 struct evsel *evlist__id2evsel(struct evlist *evlist, u64 id) in evlist__id2evsel() argument
619 if (evlist->core.nr_entries == 1 || !id) in evlist__id2evsel()
620 return evlist__first(evlist); in evlist__id2evsel()
622 sid = evlist__id2sid(evlist, id); in evlist__id2evsel()
626 if (!evlist__sample_id_all(evlist)) in evlist__id2evsel()
627 return evlist__first(evlist); in evlist__id2evsel()
632 struct evsel *evlist__id2evsel_strict(struct evlist *evlist, u64 id) in evlist__id2evsel_strict() argument
639 sid = evlist__id2sid(evlist, id); in evlist__id2evsel_strict()
646 static int evlist__event2id(struct evlist *evlist, union perf_event *event, u64 *id) in evlist__event2id() argument
654 if (evlist->id_pos >= n) in evlist__event2id()
656 *id = array[evlist->id_pos]; in evlist__event2id()
658 if (evlist->is_pos > n) in evlist__event2id()
660 n -= evlist->is_pos; in evlist__event2id()
666 struct evsel *evlist__event2evsel(struct evlist *evlist, union perf_event *event) in evlist__event2evsel() argument
668 struct evsel *first = evlist__first(evlist); in evlist__event2evsel()
674 if (evlist->core.nr_entries == 1) in evlist__event2evsel()
681 if (evlist__event2id(evlist, event, &id)) in evlist__event2evsel()
689 head = &evlist->core.heads[hash]; in evlist__event2evsel()
698 static int evlist__set_paused(struct evlist *evlist, bool value) in evlist__set_paused() argument
702 if (!evlist->overwrite_mmap) in evlist__set_paused()
705 for (i = 0; i < evlist->core.nr_mmaps; i++) { in evlist__set_paused()
706 int fd = evlist->overwrite_mmap[i].core.fd; in evlist__set_paused()
718 static int evlist__pause(struct evlist *evlist) in evlist__pause() argument
720 return evlist__set_paused(evlist, true); in evlist__pause()
723 static int evlist__resume(struct evlist *evlist) in evlist__resume() argument
725 return evlist__set_paused(evlist, false); in evlist__resume()
728 static void evlist__munmap_nofree(struct evlist *evlist) in evlist__munmap_nofree() argument
732 if (evlist->mmap) in evlist__munmap_nofree()
733 for (i = 0; i < evlist->core.nr_mmaps; i++) in evlist__munmap_nofree()
734 perf_mmap__munmap(&evlist->mmap[i].core); in evlist__munmap_nofree()
736 if (evlist->overwrite_mmap) in evlist__munmap_nofree()
737 for (i = 0; i < evlist->core.nr_mmaps; i++) in evlist__munmap_nofree()
738 perf_mmap__munmap(&evlist->overwrite_mmap[i].core); in evlist__munmap_nofree()
741 void evlist__munmap(struct evlist *evlist) in evlist__munmap() argument
743 evlist__munmap_nofree(evlist); in evlist__munmap()
744 zfree(&evlist->mmap); in evlist__munmap()
745 zfree(&evlist->overwrite_mmap); in evlist__munmap()
755 static struct mmap *evlist__alloc_mmap(struct evlist *evlist, in evlist__alloc_mmap() argument
761 map = zalloc(evlist->core.nr_mmaps * sizeof(struct mmap)); in evlist__alloc_mmap()
765 for (i = 0; i < evlist->core.nr_mmaps; i++) { in evlist__alloc_mmap()
789 struct evlist *evlist = container_of(_evlist, struct evlist, core); in perf_evlist__mmap_cb_idx() local
793 auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, evsel, idx); in perf_evlist__mmap_cb_idx()
799 struct evlist *evlist = container_of(_evlist, struct evlist, core); in perf_evlist__mmap_cb_get() local
802 maps = overwrite ? evlist->overwrite_mmap : evlist->mmap; in perf_evlist__mmap_cb_get()
805 maps = evlist__alloc_mmap(evlist, overwrite); in perf_evlist__mmap_cb_get()
810 evlist->overwrite_mmap = maps; in perf_evlist__mmap_cb_get()
811 if (evlist->bkw_mmap_state == BKW_MMAP_NOTREADY) in perf_evlist__mmap_cb_get()
812 evlist__toggle_bkw_mmap(evlist, BKW_MMAP_RUNNING); in perf_evlist__mmap_cb_get()
814 evlist->mmap = maps; in perf_evlist__mmap_cb_get()
952 int evlist__mmap_ex(struct evlist *evlist, unsigned int pages, in evlist__mmap_ex() argument
974 evlist->core.mmap_len = evlist__mmap_size(pages); in evlist__mmap_ex()
975 pr_debug("mmap size %zuB\n", evlist->core.mmap_len); in evlist__mmap_ex()
977 auxtrace_mmap_params__init(&mp.auxtrace_mp, evlist->core.mmap_len, in evlist__mmap_ex()
980 return perf_evlist__mmap_ops(&evlist->core, &ops, &mp.core); in evlist__mmap_ex()
983 int evlist__mmap(struct evlist *evlist, unsigned int pages) in evlist__mmap() argument
985 return evlist__mmap_ex(evlist, pages, 0, false, 0, PERF_AFFINITY_SYS, 1, 0); in evlist__mmap()
988 int evlist__create_maps(struct evlist *evlist, struct target *target) in evlist__create_maps() argument
1017 if (target__uses_dummy_map(target) && !evlist__has_bpf_output(evlist)) in evlist__create_maps()
1025 evlist->core.has_user_cpus = !!target->cpu_list; in evlist__create_maps()
1027 perf_evlist__set_maps(&evlist->core, cpus, threads); in evlist__create_maps()
1040 int evlist__apply_filters(struct evlist *evlist, struct evsel **err_evsel, in evlist__apply_filters() argument
1046 evlist__for_each_entry(evlist, evsel) { in evlist__apply_filters()
1074 int evlist__set_tp_filter(struct evlist *evlist, const char *filter) in evlist__set_tp_filter() argument
1082 evlist__for_each_entry(evlist, evsel) { in evlist__set_tp_filter()
1094 int evlist__append_tp_filter(struct evlist *evlist, const char *filter) in evlist__append_tp_filter() argument
1102 evlist__for_each_entry(evlist, evsel) { in evlist__append_tp_filter()
1140 int evlist__set_tp_filter_pids(struct evlist *evlist, size_t npids, pid_t *pids) in evlist__set_tp_filter_pids() argument
1143 int ret = evlist__set_tp_filter(evlist, filter); in evlist__set_tp_filter_pids()
1149 int evlist__append_tp_filter_pids(struct evlist *evlist, size_t npids, pid_t *pids) in evlist__append_tp_filter_pids() argument
1152 int ret = evlist__append_tp_filter(evlist, filter); in evlist__append_tp_filter_pids()
1158 int evlist__append_tp_filter_pid(struct evlist *evlist, pid_t pid) in evlist__append_tp_filter_pid() argument
1160 return evlist__append_tp_filter_pids(evlist, 1, &pid); in evlist__append_tp_filter_pid()
1163 bool evlist__valid_sample_type(struct evlist *evlist) in evlist__valid_sample_type() argument
1167 if (evlist->core.nr_entries == 1) in evlist__valid_sample_type()
1170 if (evlist->id_pos < 0 || evlist->is_pos < 0) in evlist__valid_sample_type()
1173 evlist__for_each_entry(evlist, pos) { in evlist__valid_sample_type()
1174 if (pos->id_pos != evlist->id_pos || in evlist__valid_sample_type()
1175 pos->is_pos != evlist->is_pos) in evlist__valid_sample_type()
1182 u64 __evlist__combined_sample_type(struct evlist *evlist) in __evlist__combined_sample_type() argument
1186 if (evlist->combined_sample_type) in __evlist__combined_sample_type()
1187 return evlist->combined_sample_type; in __evlist__combined_sample_type()
1189 evlist__for_each_entry(evlist, evsel) in __evlist__combined_sample_type()
1190 evlist->combined_sample_type |= evsel->core.attr.sample_type; in __evlist__combined_sample_type()
1192 return evlist->combined_sample_type; in __evlist__combined_sample_type()
1195 u64 evlist__combined_sample_type(struct evlist *evlist) in evlist__combined_sample_type() argument
1197 evlist->combined_sample_type = 0; in evlist__combined_sample_type()
1198 return __evlist__combined_sample_type(evlist); in evlist__combined_sample_type()
1201 u64 evlist__combined_branch_type(struct evlist *evlist) in evlist__combined_branch_type() argument
1206 evlist__for_each_entry(evlist, evsel) in evlist__combined_branch_type()
1212 evlist__find_dup_event_from_prev(struct evlist *evlist, struct evsel *event) in evlist__find_dup_event_from_prev() argument
1216 evlist__for_each_entry(evlist, pos) { in evlist__find_dup_event_from_prev()
1257 void evlist__update_br_cntr(struct evlist *evlist) in evlist__update_br_cntr() argument
1262 evlist__for_each_entry(evlist, evsel) { in evlist__update_br_cntr()
1267 dup = evlist__find_dup_event_from_prev(evlist, evsel); in evlist__update_br_cntr()
1274 evlist->nr_br_cntr = i; in evlist__update_br_cntr()
1277 bool evlist__valid_read_format(struct evlist *evlist) in evlist__valid_read_format() argument
1279 struct evsel *first = evlist__first(evlist), *pos = first; in evlist__valid_read_format()
1283 evlist__for_each_entry(evlist, pos) { in evlist__valid_read_format()
1299 u16 evlist__id_hdr_size(struct evlist *evlist) in evlist__id_hdr_size() argument
1301 struct evsel *first = evlist__first(evlist); in evlist__id_hdr_size()
1306 bool evlist__valid_sample_id_all(struct evlist *evlist) in evlist__valid_sample_id_all() argument
1308 struct evsel *first = evlist__first(evlist), *pos = first; in evlist__valid_sample_id_all()
1310 evlist__for_each_entry_continue(evlist, pos) { in evlist__valid_sample_id_all()
1318 bool evlist__sample_id_all(struct evlist *evlist) in evlist__sample_id_all() argument
1320 struct evsel *first = evlist__first(evlist); in evlist__sample_id_all()
1324 void evlist__set_selected(struct evlist *evlist, struct evsel *evsel) in evlist__set_selected() argument
1326 evlist->selected = evsel; in evlist__set_selected()
1329 void evlist__close(struct evlist *evlist) in evlist__close() argument
1339 if (!evlist->core.user_requested_cpus || in evlist__close()
1340 cpu_map__is_dummy(evlist->core.user_requested_cpus)) { in evlist__close()
1341 evlist__for_each_entry_reverse(evlist, evsel) in evlist__close()
1349 evlist__for_each_cpu(evlist_cpu_itr, evlist, &affinity) { in evlist__close()
1355 evlist__for_each_entry_reverse(evlist, evsel) { in evlist__close()
1359 perf_evlist__reset_id_hash(&evlist->core); in evlist__close()
1362 static int evlist__create_syswide_maps(struct evlist *evlist) in evlist__create_syswide_maps() argument
1386 perf_evlist__set_maps(&evlist->core, cpus, threads); in evlist__create_syswide_maps()
1392 int evlist__open(struct evlist *evlist) in evlist__open() argument
1401 if (evlist->core.threads == NULL && evlist->core.user_requested_cpus == NULL) { in evlist__open()
1402 err = evlist__create_syswide_maps(evlist); in evlist__open()
1407 evlist__update_id_pos(evlist); in evlist__open()
1409 evlist__for_each_entry(evlist, evsel) { in evlist__open()
1417 evlist__close(evlist); in evlist__open()
1422 int evlist__prepare_workload(struct evlist *evlist, struct target *target, const char *argv[], in evlist__prepare_workload() argument
1428 evlist->workload.cork_fd = -1; in evlist__prepare_workload()
1440 evlist->workload.pid = fork(); in evlist__prepare_workload()
1441 if (evlist->workload.pid < 0) { in evlist__prepare_workload()
1446 if (!evlist->workload.pid) { in evlist__prepare_workload()
1512 if (evlist->core.threads == NULL) { in evlist__prepare_workload()
1517 perf_thread_map__set_pid(evlist->core.threads, 0, evlist->workload.pid); in evlist__prepare_workload()
1531 evlist->workload.cork_fd = go_pipe[1]; in evlist__prepare_workload()
1544 int evlist__start_workload(struct evlist *evlist) in evlist__start_workload() argument
1546 if (evlist->workload.cork_fd >= 0) { in evlist__start_workload()
1552 ret = write(evlist->workload.cork_fd, &bf, 1); in evlist__start_workload()
1556 close(evlist->workload.cork_fd); in evlist__start_workload()
1557 evlist->workload.cork_fd = -1; in evlist__start_workload()
1564 void evlist__cancel_workload(struct evlist *evlist) in evlist__cancel_workload() argument
1568 if (evlist->workload.cork_fd >= 0) { in evlist__cancel_workload()
1569 close(evlist->workload.cork_fd); in evlist__cancel_workload()
1570 evlist->workload.cork_fd = -1; in evlist__cancel_workload()
1571 waitpid(evlist->workload.pid, &status, WNOHANG); in evlist__cancel_workload()
1575 int evlist__parse_sample(struct evlist *evlist, union perf_event *event, struct perf_sample *sample) in evlist__parse_sample() argument
1577 struct evsel *evsel = evlist__event2evsel(evlist, event); in evlist__parse_sample()
1586 struct perf_sample_id *sid = evlist__id2sid(evlist, sample->id); in evlist__parse_sample()
1596 int evlist__parse_sample_timestamp(struct evlist *evlist, union perf_event *event, u64 *timestamp) in evlist__parse_sample_timestamp() argument
1598 struct evsel *evsel = evlist__event2evsel(evlist, event); in evlist__parse_sample_timestamp()
1605 int evlist__strerror_open(struct evlist *evlist, int err, char *buf, size_t size) in evlist__strerror_open() argument
1633 struct evsel *first = evlist__first(evlist); in evlist__strerror_open()
1658 int evlist__strerror_mmap(struct evlist *evlist, int err, char *buf, size_t size) in evlist__strerror_mmap() argument
1661 int pages_attempted = evlist->core.mmap_len / 1024, pages_max_per_user, printed = 0; in evlist__strerror_mmap()
1689 void evlist__to_front(struct evlist *evlist, struct evsel *move_evsel) in evlist__to_front() argument
1694 if (move_evsel == evlist__first(evlist)) in evlist__to_front()
1697 evlist__for_each_entry_safe(evlist, n, evsel) { in evlist__to_front()
1702 list_splice(&move, &evlist->core.entries); in evlist__to_front()
1705 struct evsel *evlist__get_tracking_event(struct evlist *evlist) in evlist__get_tracking_event() argument
1709 evlist__for_each_entry(evlist, evsel) { in evlist__get_tracking_event()
1714 return evlist__first(evlist); in evlist__get_tracking_event()
1717 void evlist__set_tracking_event(struct evlist *evlist, struct evsel *tracking_evsel) in evlist__set_tracking_event() argument
1724 evlist__for_each_entry(evlist, evsel) { in evlist__set_tracking_event()
1732 struct evsel *evlist__findnew_tracking_event(struct evlist *evlist, bool system_wide) in evlist__findnew_tracking_event() argument
1736 evsel = evlist__get_tracking_event(evlist); in evlist__findnew_tracking_event()
1738 evsel = evlist__add_aux_dummy(evlist, system_wide); in evlist__findnew_tracking_event()
1742 evlist__set_tracking_event(evlist, evsel); in evlist__findnew_tracking_event()
1744 perf_evlist__go_system_wide(&evlist->core, &evsel->core); in evlist__findnew_tracking_event()
1750 struct evsel *evlist__find_evsel_by_str(struct evlist *evlist, const char *str) in evlist__find_evsel_by_str() argument
1754 evlist__for_each_entry(evlist, evsel) { in evlist__find_evsel_by_str()
1764 void evlist__toggle_bkw_mmap(struct evlist *evlist, enum bkw_mmap_state state) in evlist__toggle_bkw_mmap() argument
1766 enum bkw_mmap_state old_state = evlist->bkw_mmap_state; in evlist__toggle_bkw_mmap()
1773 if (!evlist->overwrite_mmap) in evlist__toggle_bkw_mmap()
1803 evlist->bkw_mmap_state = state; in evlist__toggle_bkw_mmap()
1807 evlist__pause(evlist); in evlist__toggle_bkw_mmap()
1810 evlist__resume(evlist); in evlist__toggle_bkw_mmap()
1821 bool evlist__exclude_kernel(struct evlist *evlist) in evlist__exclude_kernel() argument
1825 evlist__for_each_entry(evlist, evsel) { in evlist__exclude_kernel()
1838 void evlist__force_leader(struct evlist *evlist) in evlist__force_leader() argument
1840 if (evlist__nr_groups(evlist) == 0) { in evlist__force_leader()
1841 struct evsel *leader = evlist__first(evlist); in evlist__force_leader()
1843 evlist__set_leader(evlist); in evlist__force_leader()
1848 struct evsel *evlist__reset_weak_group(struct evlist *evsel_list, struct evsel *evsel, bool close) in evlist__reset_weak_group()
1973 int evlist__initialize_ctlfd(struct evlist *evlist, int fd, int ack) in evlist__initialize_ctlfd() argument
1980 evlist->ctl_fd.pos = perf_evlist__add_pollfd(&evlist->core, fd, NULL, POLLIN, in evlist__initialize_ctlfd()
1983 if (evlist->ctl_fd.pos < 0) { in evlist__initialize_ctlfd()
1984 evlist->ctl_fd.pos = -1; in evlist__initialize_ctlfd()
1989 evlist->ctl_fd.fd = fd; in evlist__initialize_ctlfd()
1990 evlist->ctl_fd.ack = ack; in evlist__initialize_ctlfd()
1995 bool evlist__ctlfd_initialized(struct evlist *evlist) in evlist__ctlfd_initialized() argument
1997 return evlist->ctl_fd.pos >= 0; in evlist__ctlfd_initialized()
2000 int evlist__finalize_ctlfd(struct evlist *evlist) in evlist__finalize_ctlfd() argument
2002 struct pollfd *entries = evlist->core.pollfd.entries; in evlist__finalize_ctlfd()
2004 if (!evlist__ctlfd_initialized(evlist)) in evlist__finalize_ctlfd()
2007 entries[evlist->ctl_fd.pos].fd = -1; in evlist__finalize_ctlfd()
2008 entries[evlist->ctl_fd.pos].events = 0; in evlist__finalize_ctlfd()
2009 entries[evlist->ctl_fd.pos].revents = 0; in evlist__finalize_ctlfd()
2011 evlist->ctl_fd.pos = -1; in evlist__finalize_ctlfd()
2012 evlist->ctl_fd.ack = -1; in evlist__finalize_ctlfd()
2013 evlist->ctl_fd.fd = -1; in evlist__finalize_ctlfd()
2018 static int evlist__ctlfd_recv(struct evlist *evlist, enum evlist_ctl_cmd *cmd, in evlist__ctlfd_recv() argument
2030 err = read(evlist->ctl_fd.fd, &c, 1); in evlist__ctlfd_recv()
2044 pr_err("Failed to read from ctlfd %d: %m\n", evlist->ctl_fd.fd); in evlist__ctlfd_recv()
2078 int evlist__ctlfd_ack(struct evlist *evlist) in evlist__ctlfd_ack() argument
2082 if (evlist->ctl_fd.ack == -1) in evlist__ctlfd_ack()
2085 err = write(evlist->ctl_fd.ack, EVLIST_CTL_CMD_ACK_TAG, in evlist__ctlfd_ack()
2088 pr_err("failed to write to ctl_ack_fd %d: %m\n", evlist->ctl_fd.ack); in evlist__ctlfd_ack()
2111 static int evlist__ctlfd_enable(struct evlist *evlist, char *cmd_data, bool enable) in evlist__ctlfd_enable() argument
2127 evsel = evlist__find_evsel_by_str(evlist, name); in evlist__ctlfd_enable()
2130 evlist__enable_evsel(evlist, name); in evlist__ctlfd_enable()
2132 evlist__disable_evsel(evlist, name); in evlist__ctlfd_enable()
2140 evlist__enable(evlist); in evlist__ctlfd_enable()
2143 evlist__disable(evlist); in evlist__ctlfd_enable()
2151 static int evlist__ctlfd_list(struct evlist *evlist, char *cmd_data) in evlist__ctlfd_list() argument
2179 evlist__for_each_entry(evlist, evsel) in evlist__ctlfd_list()
2185 int evlist__ctlfd_process(struct evlist *evlist, enum evlist_ctl_cmd *cmd) in evlist__ctlfd_process() argument
2189 int ctlfd_pos = evlist->ctl_fd.pos; in evlist__ctlfd_process()
2190 struct pollfd *entries = evlist->core.pollfd.entries; in evlist__ctlfd_process()
2192 if (!evlist__ctlfd_initialized(evlist) || !entries[ctlfd_pos].revents) in evlist__ctlfd_process()
2196 err = evlist__ctlfd_recv(evlist, cmd, cmd_data, in evlist__ctlfd_process()
2202 err = evlist__ctlfd_enable(evlist, cmd_data, in evlist__ctlfd_process()
2206 err = evlist__ctlfd_list(evlist, cmd_data); in evlist__ctlfd_process()
2220 evlist__ctlfd_ack(evlist); in evlist__ctlfd_process()
2225 evlist__finalize_ctlfd(evlist); in evlist__ctlfd_process()
2294 struct evlist *evlist; member
2313 int evlist__parse_event_enable_time(struct evlist *evlist, struct record_opts *opts, in evlist__parse_event_enable_time() argument
2361 eet->pollfd_pos = perf_evlist__add_pollfd(&evlist->core, eet->timerfd, NULL, POLLIN, flags); in evlist__parse_event_enable_time()
2367 eet->evlist = evlist; in evlist__parse_event_enable_time()
2368 evlist->eet = eet; in evlist__parse_event_enable_time()
2418 entries = eet->evlist->core.pollfd.entries; in event_enable_timer__process()
2427 evlist__disable_non_dummy(eet->evlist); in event_enable_timer__process()
2435 evlist__enable_non_dummy(eet->evlist); in event_enable_timer__process()
2462 struct evsel *evlist__find_evsel(struct evlist *evlist, int idx) in evlist__find_evsel() argument
2466 evlist__for_each_entry(evlist, evsel) { in evlist__find_evsel()
2473 void evlist__format_evsels(struct evlist *evlist, struct strbuf *sb, size_t max_length) in evlist__format_evsels() argument
2478 evlist__for_each_entry(evlist, evsel) { in evlist__format_evsels()
2505 void evlist__check_mem_load_aux(struct evlist *evlist) in evlist__check_mem_load_aux() argument
2516 evlist__for_each_entry(evlist, evsel) { in evlist__check_mem_load_aux()
2539 void evlist__warn_user_requested_cpus(struct evlist *evlist, const char *cpu_list) in evlist__warn_user_requested_cpus() argument
2551 evlist__for_each_entry(evlist, pos) { in evlist__warn_user_requested_cpus()
2558 static bool evlist__disable_uniquify(const struct evlist *evlist) in evlist__disable_uniquify() argument
2564 evlist__for_each_entry(evlist, counter) { in evlist__disable_uniquify()
2582 static bool evlist__set_needs_uniquify(struct evlist *evlist, const struct perf_stat_config *config) in evlist__set_needs_uniquify() argument
2587 if (evlist__disable_uniquify(evlist)) { in evlist__set_needs_uniquify()
2588 evlist__for_each_entry(evlist, counter) in evlist__set_needs_uniquify()
2593 evlist__for_each_entry(evlist, counter) { in evlist__set_needs_uniquify()
2600 void evlist__uniquify_evsel_names(struct evlist *evlist, const struct perf_stat_config *config) in evlist__uniquify_evsel_names() argument
2602 if (evlist__set_needs_uniquify(evlist, config)) { in evlist__uniquify_evsel_names()
2605 evlist__for_each_entry(evlist, pos) in evlist__uniquify_evsel_names()
2610 bool evlist__has_bpf_output(struct evlist *evlist) in evlist__has_bpf_output() argument
2614 evlist__for_each_entry(evlist, evsel) { in evlist__has_bpf_output()
2622 bool evlist__needs_bpf_sb_event(struct evlist *evlist) in evlist__needs_bpf_sb_event() argument
2626 evlist__for_each_entry(evlist, evsel) { in evlist__needs_bpf_sb_event()