Lines Matching refs:evlist

30 static void perf_evlist__mmap_put(struct perf_evlist *evlist, int idx);
31 static void __perf_evlist__munmap(struct perf_evlist *evlist, int idx);
36 void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus, in perf_evlist__init() argument
42 INIT_HLIST_HEAD(&evlist->heads[i]); in perf_evlist__init()
43 INIT_LIST_HEAD(&evlist->entries); in perf_evlist__init()
44 perf_evlist__set_maps(evlist, cpus, threads); in perf_evlist__init()
45 fdarray__init(&evlist->pollfd, 64); in perf_evlist__init()
46 evlist->workload.pid = -1; in perf_evlist__init()
51 struct perf_evlist *evlist = zalloc(sizeof(*evlist)); in perf_evlist__new() local
53 if (evlist != NULL) in perf_evlist__new()
54 perf_evlist__init(evlist, NULL, NULL); in perf_evlist__new()
56 return evlist; in perf_evlist__new()
61 struct perf_evlist *evlist = perf_evlist__new(); in perf_evlist__new_default() local
63 if (evlist && perf_evlist__add_default(evlist)) { in perf_evlist__new_default()
64 perf_evlist__delete(evlist); in perf_evlist__new_default()
65 evlist = NULL; in perf_evlist__new_default()
68 return evlist; in perf_evlist__new_default()
78 void perf_evlist__set_id_pos(struct perf_evlist *evlist) in perf_evlist__set_id_pos() argument
80 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__set_id_pos()
82 evlist->id_pos = first->id_pos; in perf_evlist__set_id_pos()
83 evlist->is_pos = first->is_pos; in perf_evlist__set_id_pos()
86 static void perf_evlist__update_id_pos(struct perf_evlist *evlist) in perf_evlist__update_id_pos() argument
90 evlist__for_each(evlist, evsel) in perf_evlist__update_id_pos()
93 perf_evlist__set_id_pos(evlist); in perf_evlist__update_id_pos()
96 static void perf_evlist__purge(struct perf_evlist *evlist) in perf_evlist__purge() argument
100 evlist__for_each_safe(evlist, n, pos) { in perf_evlist__purge()
102 pos->evlist = NULL; in perf_evlist__purge()
106 evlist->nr_entries = 0; in perf_evlist__purge()
109 void perf_evlist__exit(struct perf_evlist *evlist) in perf_evlist__exit() argument
111 zfree(&evlist->mmap); in perf_evlist__exit()
112 fdarray__exit(&evlist->pollfd); in perf_evlist__exit()
115 void perf_evlist__delete(struct perf_evlist *evlist) in perf_evlist__delete() argument
117 perf_evlist__munmap(evlist); in perf_evlist__delete()
118 perf_evlist__close(evlist); in perf_evlist__delete()
119 cpu_map__put(evlist->cpus); in perf_evlist__delete()
120 thread_map__put(evlist->threads); in perf_evlist__delete()
121 evlist->cpus = NULL; in perf_evlist__delete()
122 evlist->threads = NULL; in perf_evlist__delete()
123 perf_evlist__purge(evlist); in perf_evlist__delete()
124 perf_evlist__exit(evlist); in perf_evlist__delete()
125 free(evlist); in perf_evlist__delete()
128 static void __perf_evlist__propagate_maps(struct perf_evlist *evlist, in __perf_evlist__propagate_maps() argument
135 if (!evsel->own_cpus || evlist->has_user_cpus) { in __perf_evlist__propagate_maps()
137 evsel->cpus = cpu_map__get(evlist->cpus); in __perf_evlist__propagate_maps()
144 evsel->threads = thread_map__get(evlist->threads); in __perf_evlist__propagate_maps()
147 static void perf_evlist__propagate_maps(struct perf_evlist *evlist) in perf_evlist__propagate_maps() argument
151 evlist__for_each(evlist, evsel) in perf_evlist__propagate_maps()
152 __perf_evlist__propagate_maps(evlist, evsel); in perf_evlist__propagate_maps()
155 void perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry) in perf_evlist__add() argument
157 entry->evlist = evlist; in perf_evlist__add()
158 list_add_tail(&entry->node, &evlist->entries); in perf_evlist__add()
159 entry->idx = evlist->nr_entries; in perf_evlist__add()
162 if (!evlist->nr_entries++) in perf_evlist__add()
163 perf_evlist__set_id_pos(evlist); in perf_evlist__add()
165 __perf_evlist__propagate_maps(evlist, entry); in perf_evlist__add()
168 void perf_evlist__remove(struct perf_evlist *evlist, struct perf_evsel *evsel) in perf_evlist__remove() argument
170 evsel->evlist = NULL; in perf_evlist__remove()
172 evlist->nr_entries -= 1; in perf_evlist__remove()
175 void perf_evlist__splice_list_tail(struct perf_evlist *evlist, in perf_evlist__splice_list_tail() argument
182 perf_evlist__add(evlist, evsel); in perf_evlist__splice_list_tail()
200 void perf_evlist__set_leader(struct perf_evlist *evlist) in perf_evlist__set_leader() argument
202 if (evlist->nr_entries) { in perf_evlist__set_leader()
203 evlist->nr_groups = evlist->nr_entries > 1 ? 1 : 0; in perf_evlist__set_leader()
204 __perf_evlist__set_leader(&evlist->entries); in perf_evlist__set_leader()
222 int perf_evlist__add_default(struct perf_evlist *evlist) in perf_evlist__add_default() argument
243 perf_evlist__add(evlist, evsel); in perf_evlist__add_default()
251 static int perf_evlist__add_attrs(struct perf_evlist *evlist, in perf_evlist__add_attrs() argument
259 evsel = perf_evsel__new_idx(attrs + i, evlist->nr_entries + i); in perf_evlist__add_attrs()
265 perf_evlist__splice_list_tail(evlist, &head); in perf_evlist__add_attrs()
275 int __perf_evlist__add_default_attrs(struct perf_evlist *evlist, in __perf_evlist__add_default_attrs() argument
283 return perf_evlist__add_attrs(evlist, attrs, nr_attrs); in __perf_evlist__add_default_attrs()
287 perf_evlist__find_tracepoint_by_id(struct perf_evlist *evlist, int id) in perf_evlist__find_tracepoint_by_id() argument
291 evlist__for_each(evlist, evsel) { in perf_evlist__find_tracepoint_by_id()
301 perf_evlist__find_tracepoint_by_name(struct perf_evlist *evlist, in perf_evlist__find_tracepoint_by_name() argument
306 evlist__for_each(evlist, evsel) { in perf_evlist__find_tracepoint_by_name()
315 int perf_evlist__add_newtp(struct perf_evlist *evlist, in perf_evlist__add_newtp() argument
324 perf_evlist__add(evlist, evsel); in perf_evlist__add_newtp()
328 static int perf_evlist__nr_threads(struct perf_evlist *evlist, in perf_evlist__nr_threads() argument
334 return thread_map__nr(evlist->threads); in perf_evlist__nr_threads()
337 void perf_evlist__disable(struct perf_evlist *evlist) in perf_evlist__disable() argument
341 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__disable()
345 evlist__for_each(evlist, pos) { in perf_evlist__disable()
348 nr_threads = perf_evlist__nr_threads(evlist, pos); in perf_evlist__disable()
355 evlist->enabled = false; in perf_evlist__disable()
358 void perf_evlist__enable(struct perf_evlist *evlist) in perf_evlist__enable() argument
362 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__enable()
366 evlist__for_each(evlist, pos) { in perf_evlist__enable()
369 nr_threads = perf_evlist__nr_threads(evlist, pos); in perf_evlist__enable()
376 evlist->enabled = true; in perf_evlist__enable()
379 void perf_evlist__toggle_enable(struct perf_evlist *evlist) in perf_evlist__toggle_enable() argument
381 (evlist->enabled ? perf_evlist__disable : perf_evlist__enable)(evlist); in perf_evlist__toggle_enable()
384 int perf_evlist__disable_event(struct perf_evlist *evlist, in perf_evlist__disable_event() argument
388 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__disable_event()
389 int nr_threads = perf_evlist__nr_threads(evlist, evsel); in perf_evlist__disable_event()
405 int perf_evlist__enable_event(struct perf_evlist *evlist, in perf_evlist__enable_event() argument
409 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__enable_event()
410 int nr_threads = perf_evlist__nr_threads(evlist, evsel); in perf_evlist__enable_event()
426 static int perf_evlist__enable_event_cpu(struct perf_evlist *evlist, in perf_evlist__enable_event_cpu() argument
430 int nr_threads = perf_evlist__nr_threads(evlist, evsel); in perf_evlist__enable_event_cpu()
444 static int perf_evlist__enable_event_thread(struct perf_evlist *evlist, in perf_evlist__enable_event_thread() argument
449 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__enable_event_thread()
462 int perf_evlist__enable_event_idx(struct perf_evlist *evlist, in perf_evlist__enable_event_idx() argument
465 bool per_cpu_mmaps = !cpu_map__empty(evlist->cpus); in perf_evlist__enable_event_idx()
468 return perf_evlist__enable_event_cpu(evlist, evsel, idx); in perf_evlist__enable_event_idx()
470 return perf_evlist__enable_event_thread(evlist, evsel, idx); in perf_evlist__enable_event_idx()
473 int perf_evlist__alloc_pollfd(struct perf_evlist *evlist) in perf_evlist__alloc_pollfd() argument
475 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__alloc_pollfd()
476 int nr_threads = thread_map__nr(evlist->threads); in perf_evlist__alloc_pollfd()
480 evlist__for_each(evlist, evsel) { in perf_evlist__alloc_pollfd()
487 if (fdarray__available_entries(&evlist->pollfd) < nfds && in perf_evlist__alloc_pollfd()
488 fdarray__grow(&evlist->pollfd, nfds) < 0) in perf_evlist__alloc_pollfd()
494 static int __perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd, int idx) in __perf_evlist__add_pollfd() argument
496 int pos = fdarray__add(&evlist->pollfd, fd, POLLIN | POLLERR | POLLHUP); in __perf_evlist__add_pollfd()
502 evlist->pollfd.priv[pos].idx = idx; in __perf_evlist__add_pollfd()
510 int perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd) in perf_evlist__add_pollfd() argument
512 return __perf_evlist__add_pollfd(evlist, fd, -1); in perf_evlist__add_pollfd()
517 struct perf_evlist *evlist = container_of(fda, struct perf_evlist, pollfd); in perf_evlist__munmap_filtered() local
519 perf_evlist__mmap_put(evlist, fda->priv[fd].idx); in perf_evlist__munmap_filtered()
522 int perf_evlist__filter_pollfd(struct perf_evlist *evlist, short revents_and_mask) in perf_evlist__filter_pollfd() argument
524 return fdarray__filter(&evlist->pollfd, revents_and_mask, in perf_evlist__filter_pollfd()
528 int perf_evlist__poll(struct perf_evlist *evlist, int timeout) in perf_evlist__poll() argument
530 return fdarray__poll(&evlist->pollfd, timeout); in perf_evlist__poll()
533 static void perf_evlist__id_hash(struct perf_evlist *evlist, in perf_evlist__id_hash() argument
543 hlist_add_head(&sid->node, &evlist->heads[hash]); in perf_evlist__id_hash()
546 void perf_evlist__id_add(struct perf_evlist *evlist, struct perf_evsel *evsel, in perf_evlist__id_add() argument
549 perf_evlist__id_hash(evlist, evsel, cpu, thread, id); in perf_evlist__id_add()
553 static int perf_evlist__id_add_fd(struct perf_evlist *evlist, in perf_evlist__id_add_fd() argument
575 if (perf_evlist__read_format(evlist) & PERF_FORMAT_GROUP) in perf_evlist__id_add_fd()
590 perf_evlist__id_add(evlist, evsel, cpu, thread, id); in perf_evlist__id_add_fd()
594 static void perf_evlist__set_sid_idx(struct perf_evlist *evlist, in perf_evlist__set_sid_idx() argument
600 if (evlist->cpus && cpu >= 0) in perf_evlist__set_sid_idx()
601 sid->cpu = evlist->cpus->map[cpu]; in perf_evlist__set_sid_idx()
604 if (!evsel->system_wide && evlist->threads && thread >= 0) in perf_evlist__set_sid_idx()
605 sid->tid = thread_map__pid(evlist->threads, thread); in perf_evlist__set_sid_idx()
610 struct perf_sample_id *perf_evlist__id2sid(struct perf_evlist *evlist, u64 id) in perf_evlist__id2sid() argument
617 head = &evlist->heads[hash]; in perf_evlist__id2sid()
626 struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id) in perf_evlist__id2evsel() argument
630 if (evlist->nr_entries == 1 || !id) in perf_evlist__id2evsel()
631 return perf_evlist__first(evlist); in perf_evlist__id2evsel()
633 sid = perf_evlist__id2sid(evlist, id); in perf_evlist__id2evsel()
637 if (!perf_evlist__sample_id_all(evlist)) in perf_evlist__id2evsel()
638 return perf_evlist__first(evlist); in perf_evlist__id2evsel()
643 struct perf_evsel *perf_evlist__id2evsel_strict(struct perf_evlist *evlist, in perf_evlist__id2evsel_strict() argument
651 sid = perf_evlist__id2sid(evlist, id); in perf_evlist__id2evsel_strict()
658 static int perf_evlist__event2id(struct perf_evlist *evlist, in perf_evlist__event2id() argument
667 if (evlist->id_pos >= n) in perf_evlist__event2id()
669 *id = array[evlist->id_pos]; in perf_evlist__event2id()
671 if (evlist->is_pos > n) in perf_evlist__event2id()
673 n -= evlist->is_pos; in perf_evlist__event2id()
679 static struct perf_evsel *perf_evlist__event2evsel(struct perf_evlist *evlist, in perf_evlist__event2evsel() argument
682 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__event2evsel()
688 if (evlist->nr_entries == 1) in perf_evlist__event2evsel()
695 if (perf_evlist__event2id(evlist, event, &id)) in perf_evlist__event2evsel()
703 head = &evlist->heads[hash]; in perf_evlist__event2evsel()
712 union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx) in perf_evlist__mmap_read() argument
714 struct perf_mmap *md = &evlist->mmap[idx]; in perf_evlist__mmap_read()
727 if (evlist->overwrite) { in perf_evlist__mmap_read()
786 static void perf_evlist__mmap_get(struct perf_evlist *evlist, int idx) in perf_evlist__mmap_get() argument
788 atomic_inc(&evlist->mmap[idx].refcnt); in perf_evlist__mmap_get()
791 static void perf_evlist__mmap_put(struct perf_evlist *evlist, int idx) in perf_evlist__mmap_put() argument
793 BUG_ON(atomic_read(&evlist->mmap[idx].refcnt) == 0); in perf_evlist__mmap_put()
795 if (atomic_dec_and_test(&evlist->mmap[idx].refcnt)) in perf_evlist__mmap_put()
796 __perf_evlist__munmap(evlist, idx); in perf_evlist__mmap_put()
799 void perf_evlist__mmap_consume(struct perf_evlist *evlist, int idx) in perf_evlist__mmap_consume() argument
801 struct perf_mmap *md = &evlist->mmap[idx]; in perf_evlist__mmap_consume()
803 if (!evlist->overwrite) { in perf_evlist__mmap_consume()
810 perf_evlist__mmap_put(evlist, idx); in perf_evlist__mmap_consume()
835 struct perf_evlist *evlist __maybe_unused, in auxtrace_mmap_params__set_idx()
841 static void __perf_evlist__munmap(struct perf_evlist *evlist, int idx) in __perf_evlist__munmap() argument
843 if (evlist->mmap[idx].base != NULL) { in __perf_evlist__munmap()
844 munmap(evlist->mmap[idx].base, evlist->mmap_len); in __perf_evlist__munmap()
845 evlist->mmap[idx].base = NULL; in __perf_evlist__munmap()
846 atomic_set(&evlist->mmap[idx].refcnt, 0); in __perf_evlist__munmap()
848 auxtrace_mmap__munmap(&evlist->mmap[idx].auxtrace_mmap); in __perf_evlist__munmap()
851 void perf_evlist__munmap(struct perf_evlist *evlist) in perf_evlist__munmap() argument
855 if (evlist->mmap == NULL) in perf_evlist__munmap()
858 for (i = 0; i < evlist->nr_mmaps; i++) in perf_evlist__munmap()
859 __perf_evlist__munmap(evlist, i); in perf_evlist__munmap()
861 zfree(&evlist->mmap); in perf_evlist__munmap()
864 static int perf_evlist__alloc_mmap(struct perf_evlist *evlist) in perf_evlist__alloc_mmap() argument
866 evlist->nr_mmaps = cpu_map__nr(evlist->cpus); in perf_evlist__alloc_mmap()
867 if (cpu_map__empty(evlist->cpus)) in perf_evlist__alloc_mmap()
868 evlist->nr_mmaps = thread_map__nr(evlist->threads); in perf_evlist__alloc_mmap()
869 evlist->mmap = zalloc(evlist->nr_mmaps * sizeof(struct perf_mmap)); in perf_evlist__alloc_mmap()
870 return evlist->mmap != NULL ? 0 : -ENOMEM; in perf_evlist__alloc_mmap()
879 static int __perf_evlist__mmap(struct perf_evlist *evlist, int idx, in __perf_evlist__mmap() argument
895 atomic_set(&evlist->mmap[idx].refcnt, 2); in __perf_evlist__mmap()
896 evlist->mmap[idx].prev = 0; in __perf_evlist__mmap()
897 evlist->mmap[idx].mask = mp->mask; in __perf_evlist__mmap()
898 evlist->mmap[idx].base = mmap(NULL, evlist->mmap_len, mp->prot, in __perf_evlist__mmap()
900 if (evlist->mmap[idx].base == MAP_FAILED) { in __perf_evlist__mmap()
903 evlist->mmap[idx].base = NULL; in __perf_evlist__mmap()
907 if (auxtrace_mmap__mmap(&evlist->mmap[idx].auxtrace_mmap, in __perf_evlist__mmap()
908 &mp->auxtrace_mp, evlist->mmap[idx].base, fd)) in __perf_evlist__mmap()
914 static int perf_evlist__mmap_per_evsel(struct perf_evlist *evlist, int idx, in perf_evlist__mmap_per_evsel() argument
920 evlist__for_each(evlist, evsel) { in perf_evlist__mmap_per_evsel()
930 if (__perf_evlist__mmap(evlist, idx, mp, *output) < 0) in perf_evlist__mmap_per_evsel()
936 perf_evlist__mmap_get(evlist, idx); in perf_evlist__mmap_per_evsel()
947 __perf_evlist__add_pollfd(evlist, fd, idx) < 0) { in perf_evlist__mmap_per_evsel()
948 perf_evlist__mmap_put(evlist, idx); in perf_evlist__mmap_per_evsel()
953 if (perf_evlist__id_add_fd(evlist, evsel, cpu, thread, in perf_evlist__mmap_per_evsel()
956 perf_evlist__set_sid_idx(evlist, evsel, idx, cpu, in perf_evlist__mmap_per_evsel()
964 static int perf_evlist__mmap_per_cpu(struct perf_evlist *evlist, in perf_evlist__mmap_per_cpu() argument
968 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__mmap_per_cpu()
969 int nr_threads = thread_map__nr(evlist->threads); in perf_evlist__mmap_per_cpu()
975 auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, cpu, in perf_evlist__mmap_per_cpu()
979 if (perf_evlist__mmap_per_evsel(evlist, cpu, mp, cpu, in perf_evlist__mmap_per_cpu()
989 __perf_evlist__munmap(evlist, cpu); in perf_evlist__mmap_per_cpu()
993 static int perf_evlist__mmap_per_thread(struct perf_evlist *evlist, in perf_evlist__mmap_per_thread() argument
997 int nr_threads = thread_map__nr(evlist->threads); in perf_evlist__mmap_per_thread()
1003 auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, thread, in perf_evlist__mmap_per_thread()
1006 if (perf_evlist__mmap_per_evsel(evlist, thread, mp, 0, thread, in perf_evlist__mmap_per_thread()
1015 __perf_evlist__munmap(evlist, thread); in perf_evlist__mmap_per_thread()
1129 int perf_evlist__mmap_ex(struct perf_evlist *evlist, unsigned int pages, in perf_evlist__mmap_ex() argument
1134 const struct cpu_map *cpus = evlist->cpus; in perf_evlist__mmap_ex()
1135 const struct thread_map *threads = evlist->threads; in perf_evlist__mmap_ex()
1140 if (evlist->mmap == NULL && perf_evlist__alloc_mmap(evlist) < 0) in perf_evlist__mmap_ex()
1143 if (evlist->pollfd.entries == NULL && perf_evlist__alloc_pollfd(evlist) < 0) in perf_evlist__mmap_ex()
1146 evlist->overwrite = overwrite; in perf_evlist__mmap_ex()
1147 evlist->mmap_len = perf_evlist__mmap_size(pages); in perf_evlist__mmap_ex()
1148 pr_debug("mmap size %zuB\n", evlist->mmap_len); in perf_evlist__mmap_ex()
1149 mp.mask = evlist->mmap_len - page_size - 1; in perf_evlist__mmap_ex()
1151 auxtrace_mmap_params__init(&mp.auxtrace_mp, evlist->mmap_len, in perf_evlist__mmap_ex()
1154 evlist__for_each(evlist, evsel) { in perf_evlist__mmap_ex()
1162 return perf_evlist__mmap_per_thread(evlist, &mp); in perf_evlist__mmap_ex()
1164 return perf_evlist__mmap_per_cpu(evlist, &mp); in perf_evlist__mmap_ex()
1167 int perf_evlist__mmap(struct perf_evlist *evlist, unsigned int pages, in perf_evlist__mmap() argument
1170 return perf_evlist__mmap_ex(evlist, pages, overwrite, 0, false); in perf_evlist__mmap()
1173 int perf_evlist__create_maps(struct perf_evlist *evlist, struct target *target) in perf_evlist__create_maps() argument
1191 evlist->has_user_cpus = !!target->cpu_list; in perf_evlist__create_maps()
1193 perf_evlist__set_maps(evlist, cpus, threads); in perf_evlist__create_maps()
1202 void perf_evlist__set_maps(struct perf_evlist *evlist, struct cpu_map *cpus, in perf_evlist__set_maps() argument
1212 if (cpus != evlist->cpus) { in perf_evlist__set_maps()
1213 cpu_map__put(evlist->cpus); in perf_evlist__set_maps()
1214 evlist->cpus = cpu_map__get(cpus); in perf_evlist__set_maps()
1217 if (threads != evlist->threads) { in perf_evlist__set_maps()
1218 thread_map__put(evlist->threads); in perf_evlist__set_maps()
1219 evlist->threads = thread_map__get(threads); in perf_evlist__set_maps()
1222 perf_evlist__propagate_maps(evlist); in perf_evlist__set_maps()
1225 int perf_evlist__apply_filters(struct perf_evlist *evlist, struct perf_evsel **err_evsel) in perf_evlist__apply_filters() argument
1229 const int ncpus = cpu_map__nr(evlist->cpus), in perf_evlist__apply_filters()
1230 nthreads = thread_map__nr(evlist->threads); in perf_evlist__apply_filters()
1232 evlist__for_each(evlist, evsel) { in perf_evlist__apply_filters()
1250 int perf_evlist__set_filter(struct perf_evlist *evlist, const char *filter) in perf_evlist__set_filter() argument
1255 evlist__for_each(evlist, evsel) { in perf_evlist__set_filter()
1264 int perf_evlist__set_filter_pids(struct perf_evlist *evlist, size_t npids, pid_t *pids) in perf_evlist__set_filter_pids() argument
1285 ret = perf_evlist__set_filter(evlist, filter); in perf_evlist__set_filter_pids()
1291 int perf_evlist__set_filter_pid(struct perf_evlist *evlist, pid_t pid) in perf_evlist__set_filter_pid() argument
1293 return perf_evlist__set_filter_pids(evlist, 1, &pid); in perf_evlist__set_filter_pid()
1296 bool perf_evlist__valid_sample_type(struct perf_evlist *evlist) in perf_evlist__valid_sample_type() argument
1300 if (evlist->nr_entries == 1) in perf_evlist__valid_sample_type()
1303 if (evlist->id_pos < 0 || evlist->is_pos < 0) in perf_evlist__valid_sample_type()
1306 evlist__for_each(evlist, pos) { in perf_evlist__valid_sample_type()
1307 if (pos->id_pos != evlist->id_pos || in perf_evlist__valid_sample_type()
1308 pos->is_pos != evlist->is_pos) in perf_evlist__valid_sample_type()
1315 u64 __perf_evlist__combined_sample_type(struct perf_evlist *evlist) in __perf_evlist__combined_sample_type() argument
1319 if (evlist->combined_sample_type) in __perf_evlist__combined_sample_type()
1320 return evlist->combined_sample_type; in __perf_evlist__combined_sample_type()
1322 evlist__for_each(evlist, evsel) in __perf_evlist__combined_sample_type()
1323 evlist->combined_sample_type |= evsel->attr.sample_type; in __perf_evlist__combined_sample_type()
1325 return evlist->combined_sample_type; in __perf_evlist__combined_sample_type()
1328 u64 perf_evlist__combined_sample_type(struct perf_evlist *evlist) in perf_evlist__combined_sample_type() argument
1330 evlist->combined_sample_type = 0; in perf_evlist__combined_sample_type()
1331 return __perf_evlist__combined_sample_type(evlist); in perf_evlist__combined_sample_type()
1334 u64 perf_evlist__combined_branch_type(struct perf_evlist *evlist) in perf_evlist__combined_branch_type() argument
1339 evlist__for_each(evlist, evsel) in perf_evlist__combined_branch_type()
1344 bool perf_evlist__valid_read_format(struct perf_evlist *evlist) in perf_evlist__valid_read_format() argument
1346 struct perf_evsel *first = perf_evlist__first(evlist), *pos = first; in perf_evlist__valid_read_format()
1350 evlist__for_each(evlist, pos) { in perf_evlist__valid_read_format()
1364 u64 perf_evlist__read_format(struct perf_evlist *evlist) in perf_evlist__read_format() argument
1366 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__read_format()
1370 u16 perf_evlist__id_hdr_size(struct perf_evlist *evlist) in perf_evlist__id_hdr_size() argument
1372 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__id_hdr_size()
1403 bool perf_evlist__valid_sample_id_all(struct perf_evlist *evlist) in perf_evlist__valid_sample_id_all() argument
1405 struct perf_evsel *first = perf_evlist__first(evlist), *pos = first; in perf_evlist__valid_sample_id_all()
1407 evlist__for_each_continue(evlist, pos) { in perf_evlist__valid_sample_id_all()
1415 bool perf_evlist__sample_id_all(struct perf_evlist *evlist) in perf_evlist__sample_id_all() argument
1417 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__sample_id_all()
1421 void perf_evlist__set_selected(struct perf_evlist *evlist, in perf_evlist__set_selected() argument
1424 evlist->selected = evsel; in perf_evlist__set_selected()
1427 void perf_evlist__close(struct perf_evlist *evlist) in perf_evlist__close() argument
1430 int ncpus = cpu_map__nr(evlist->cpus); in perf_evlist__close()
1431 int nthreads = thread_map__nr(evlist->threads); in perf_evlist__close()
1434 evlist__for_each_reverse(evlist, evsel) { in perf_evlist__close()
1440 static int perf_evlist__create_syswide_maps(struct perf_evlist *evlist) in perf_evlist__create_syswide_maps() argument
1463 perf_evlist__set_maps(evlist, cpus, threads); in perf_evlist__create_syswide_maps()
1471 int perf_evlist__open(struct perf_evlist *evlist) in perf_evlist__open() argument
1480 if (evlist->threads == NULL && evlist->cpus == NULL) { in perf_evlist__open()
1481 err = perf_evlist__create_syswide_maps(evlist); in perf_evlist__open()
1486 perf_evlist__update_id_pos(evlist); in perf_evlist__open()
1488 evlist__for_each(evlist, evsel) { in perf_evlist__open()
1489 err = perf_evsel__open(evsel, evlist->cpus, evlist->threads); in perf_evlist__open()
1496 perf_evlist__close(evlist); in perf_evlist__open()
1501 int perf_evlist__prepare_workload(struct perf_evlist *evlist, struct target *target, in perf_evlist__prepare_workload() argument
1518 evlist->workload.pid = fork(); in perf_evlist__prepare_workload()
1519 if (evlist->workload.pid < 0) { in perf_evlist__prepare_workload()
1524 if (!evlist->workload.pid) { in perf_evlist__prepare_workload()
1583 if (evlist->threads == NULL) { in perf_evlist__prepare_workload()
1588 thread_map__set_pid(evlist->threads, 0, evlist->workload.pid); in perf_evlist__prepare_workload()
1602 evlist->workload.cork_fd = go_pipe[1]; in perf_evlist__prepare_workload()
1615 int perf_evlist__start_workload(struct perf_evlist *evlist) in perf_evlist__start_workload() argument
1617 if (evlist->workload.cork_fd > 0) { in perf_evlist__start_workload()
1623 ret = write(evlist->workload.cork_fd, &bf, 1); in perf_evlist__start_workload()
1627 close(evlist->workload.cork_fd); in perf_evlist__start_workload()
1634 int perf_evlist__parse_sample(struct perf_evlist *evlist, union perf_event *event, in perf_evlist__parse_sample() argument
1637 struct perf_evsel *evsel = perf_evlist__event2evsel(evlist, event); in perf_evlist__parse_sample()
1644 size_t perf_evlist__fprintf(struct perf_evlist *evlist, FILE *fp) in perf_evlist__fprintf() argument
1649 evlist__for_each(evlist, evsel) { in perf_evlist__fprintf()
1657 int perf_evlist__strerror_open(struct perf_evlist *evlist __maybe_unused, in perf_evlist__strerror_open()
1693 int perf_evlist__strerror_mmap(struct perf_evlist *evlist, int err, char *buf, size_t size) in perf_evlist__strerror_mmap() argument
1696 int pages_attempted = evlist->mmap_len / 1024, pages_max_per_user, printed = 0; in perf_evlist__strerror_mmap()
1724 void perf_evlist__to_front(struct perf_evlist *evlist, in perf_evlist__to_front() argument
1730 if (move_evsel == perf_evlist__first(evlist)) in perf_evlist__to_front()
1733 evlist__for_each_safe(evlist, n, evsel) { in perf_evlist__to_front()
1738 list_splice(&move, &evlist->entries); in perf_evlist__to_front()
1741 void perf_evlist__set_tracking_event(struct perf_evlist *evlist, in perf_evlist__set_tracking_event() argument
1749 evlist__for_each(evlist, evsel) { in perf_evlist__set_tracking_event()