Lines Matching refs:evlist

29 static void perf_evlist__mmap_put(struct perf_evlist *evlist, int idx);
30 static void __perf_evlist__munmap(struct perf_evlist *evlist, int idx);
35 void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus, in perf_evlist__init() argument
41 INIT_HLIST_HEAD(&evlist->heads[i]); in perf_evlist__init()
42 INIT_LIST_HEAD(&evlist->entries); in perf_evlist__init()
43 perf_evlist__set_maps(evlist, cpus, threads); in perf_evlist__init()
44 fdarray__init(&evlist->pollfd, 64); in perf_evlist__init()
45 evlist->workload.pid = -1; in perf_evlist__init()
50 struct perf_evlist *evlist = zalloc(sizeof(*evlist)); in perf_evlist__new() local
52 if (evlist != NULL) in perf_evlist__new()
53 perf_evlist__init(evlist, NULL, NULL); in perf_evlist__new()
55 return evlist; in perf_evlist__new()
60 struct perf_evlist *evlist = perf_evlist__new(); in perf_evlist__new_default() local
62 if (evlist && perf_evlist__add_default(evlist)) { in perf_evlist__new_default()
63 perf_evlist__delete(evlist); in perf_evlist__new_default()
64 evlist = NULL; in perf_evlist__new_default()
67 return evlist; in perf_evlist__new_default()
77 void perf_evlist__set_id_pos(struct perf_evlist *evlist) in perf_evlist__set_id_pos() argument
79 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__set_id_pos()
81 evlist->id_pos = first->id_pos; in perf_evlist__set_id_pos()
82 evlist->is_pos = first->is_pos; in perf_evlist__set_id_pos()
85 static void perf_evlist__update_id_pos(struct perf_evlist *evlist) in perf_evlist__update_id_pos() argument
89 evlist__for_each(evlist, evsel) in perf_evlist__update_id_pos()
92 perf_evlist__set_id_pos(evlist); in perf_evlist__update_id_pos()
95 static void perf_evlist__purge(struct perf_evlist *evlist) in perf_evlist__purge() argument
99 evlist__for_each_safe(evlist, n, pos) { in perf_evlist__purge()
104 evlist->nr_entries = 0; in perf_evlist__purge()
107 void perf_evlist__exit(struct perf_evlist *evlist) in perf_evlist__exit() argument
109 zfree(&evlist->mmap); in perf_evlist__exit()
110 fdarray__exit(&evlist->pollfd); in perf_evlist__exit()
113 void perf_evlist__delete(struct perf_evlist *evlist) in perf_evlist__delete() argument
115 perf_evlist__munmap(evlist); in perf_evlist__delete()
116 perf_evlist__close(evlist); in perf_evlist__delete()
117 cpu_map__delete(evlist->cpus); in perf_evlist__delete()
118 thread_map__delete(evlist->threads); in perf_evlist__delete()
119 evlist->cpus = NULL; in perf_evlist__delete()
120 evlist->threads = NULL; in perf_evlist__delete()
121 perf_evlist__purge(evlist); in perf_evlist__delete()
122 perf_evlist__exit(evlist); in perf_evlist__delete()
123 free(evlist); in perf_evlist__delete()
126 void perf_evlist__add(struct perf_evlist *evlist, struct perf_evsel *entry) in perf_evlist__add() argument
128 list_add_tail(&entry->node, &evlist->entries); in perf_evlist__add()
129 entry->idx = evlist->nr_entries; in perf_evlist__add()
132 if (!evlist->nr_entries++) in perf_evlist__add()
133 perf_evlist__set_id_pos(evlist); in perf_evlist__add()
136 void perf_evlist__splice_list_tail(struct perf_evlist *evlist, in perf_evlist__splice_list_tail() argument
140 bool set_id_pos = !evlist->nr_entries; in perf_evlist__splice_list_tail()
142 list_splice_tail(list, &evlist->entries); in perf_evlist__splice_list_tail()
143 evlist->nr_entries += nr_entries; in perf_evlist__splice_list_tail()
145 perf_evlist__set_id_pos(evlist); in perf_evlist__splice_list_tail()
162 void perf_evlist__set_leader(struct perf_evlist *evlist) in perf_evlist__set_leader() argument
164 if (evlist->nr_entries) { in perf_evlist__set_leader()
165 evlist->nr_groups = evlist->nr_entries > 1 ? 1 : 0; in perf_evlist__set_leader()
166 __perf_evlist__set_leader(&evlist->entries); in perf_evlist__set_leader()
170 int perf_evlist__add_default(struct perf_evlist *evlist) in perf_evlist__add_default() argument
189 perf_evlist__add(evlist, evsel); in perf_evlist__add_default()
197 static int perf_evlist__add_attrs(struct perf_evlist *evlist, in perf_evlist__add_attrs() argument
205 evsel = perf_evsel__new_idx(attrs + i, evlist->nr_entries + i); in perf_evlist__add_attrs()
211 perf_evlist__splice_list_tail(evlist, &head, nr_attrs); in perf_evlist__add_attrs()
221 int __perf_evlist__add_default_attrs(struct perf_evlist *evlist, in __perf_evlist__add_default_attrs() argument
229 return perf_evlist__add_attrs(evlist, attrs, nr_attrs); in __perf_evlist__add_default_attrs()
233 perf_evlist__find_tracepoint_by_id(struct perf_evlist *evlist, int id) in perf_evlist__find_tracepoint_by_id() argument
237 evlist__for_each(evlist, evsel) { in perf_evlist__find_tracepoint_by_id()
247 perf_evlist__find_tracepoint_by_name(struct perf_evlist *evlist, in perf_evlist__find_tracepoint_by_name() argument
252 evlist__for_each(evlist, evsel) { in perf_evlist__find_tracepoint_by_name()
261 int perf_evlist__add_newtp(struct perf_evlist *evlist, in perf_evlist__add_newtp() argument
270 perf_evlist__add(evlist, evsel); in perf_evlist__add_newtp()
274 static int perf_evlist__nr_threads(struct perf_evlist *evlist, in perf_evlist__nr_threads() argument
280 return thread_map__nr(evlist->threads); in perf_evlist__nr_threads()
283 void perf_evlist__disable(struct perf_evlist *evlist) in perf_evlist__disable() argument
287 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__disable()
291 evlist__for_each(evlist, pos) { in perf_evlist__disable()
294 nr_threads = perf_evlist__nr_threads(evlist, pos); in perf_evlist__disable()
302 void perf_evlist__enable(struct perf_evlist *evlist) in perf_evlist__enable() argument
306 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__enable()
310 evlist__for_each(evlist, pos) { in perf_evlist__enable()
313 nr_threads = perf_evlist__nr_threads(evlist, pos); in perf_evlist__enable()
321 int perf_evlist__disable_event(struct perf_evlist *evlist, in perf_evlist__disable_event() argument
325 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__disable_event()
326 int nr_threads = perf_evlist__nr_threads(evlist, evsel); in perf_evlist__disable_event()
342 int perf_evlist__enable_event(struct perf_evlist *evlist, in perf_evlist__enable_event() argument
346 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__enable_event()
347 int nr_threads = perf_evlist__nr_threads(evlist, evsel); in perf_evlist__enable_event()
363 static int perf_evlist__enable_event_cpu(struct perf_evlist *evlist, in perf_evlist__enable_event_cpu() argument
367 int nr_threads = perf_evlist__nr_threads(evlist, evsel); in perf_evlist__enable_event_cpu()
381 static int perf_evlist__enable_event_thread(struct perf_evlist *evlist, in perf_evlist__enable_event_thread() argument
386 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__enable_event_thread()
399 int perf_evlist__enable_event_idx(struct perf_evlist *evlist, in perf_evlist__enable_event_idx() argument
402 bool per_cpu_mmaps = !cpu_map__empty(evlist->cpus); in perf_evlist__enable_event_idx()
405 return perf_evlist__enable_event_cpu(evlist, evsel, idx); in perf_evlist__enable_event_idx()
407 return perf_evlist__enable_event_thread(evlist, evsel, idx); in perf_evlist__enable_event_idx()
410 int perf_evlist__alloc_pollfd(struct perf_evlist *evlist) in perf_evlist__alloc_pollfd() argument
412 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__alloc_pollfd()
413 int nr_threads = thread_map__nr(evlist->threads); in perf_evlist__alloc_pollfd()
417 evlist__for_each(evlist, evsel) { in perf_evlist__alloc_pollfd()
424 if (fdarray__available_entries(&evlist->pollfd) < nfds && in perf_evlist__alloc_pollfd()
425 fdarray__grow(&evlist->pollfd, nfds) < 0) in perf_evlist__alloc_pollfd()
431 static int __perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd, int idx) in __perf_evlist__add_pollfd() argument
433 int pos = fdarray__add(&evlist->pollfd, fd, POLLIN | POLLERR | POLLHUP); in __perf_evlist__add_pollfd()
439 evlist->pollfd.priv[pos].idx = idx; in __perf_evlist__add_pollfd()
447 int perf_evlist__add_pollfd(struct perf_evlist *evlist, int fd) in perf_evlist__add_pollfd() argument
449 return __perf_evlist__add_pollfd(evlist, fd, -1); in perf_evlist__add_pollfd()
454 struct perf_evlist *evlist = container_of(fda, struct perf_evlist, pollfd); in perf_evlist__munmap_filtered() local
456 perf_evlist__mmap_put(evlist, fda->priv[fd].idx); in perf_evlist__munmap_filtered()
459 int perf_evlist__filter_pollfd(struct perf_evlist *evlist, short revents_and_mask) in perf_evlist__filter_pollfd() argument
461 return fdarray__filter(&evlist->pollfd, revents_and_mask, in perf_evlist__filter_pollfd()
465 int perf_evlist__poll(struct perf_evlist *evlist, int timeout) in perf_evlist__poll() argument
467 return fdarray__poll(&evlist->pollfd, timeout); in perf_evlist__poll()
470 static void perf_evlist__id_hash(struct perf_evlist *evlist, in perf_evlist__id_hash() argument
480 hlist_add_head(&sid->node, &evlist->heads[hash]); in perf_evlist__id_hash()
483 void perf_evlist__id_add(struct perf_evlist *evlist, struct perf_evsel *evsel, in perf_evlist__id_add() argument
486 perf_evlist__id_hash(evlist, evsel, cpu, thread, id); in perf_evlist__id_add()
490 static int perf_evlist__id_add_fd(struct perf_evlist *evlist, in perf_evlist__id_add_fd() argument
512 if (perf_evlist__read_format(evlist) & PERF_FORMAT_GROUP) in perf_evlist__id_add_fd()
527 perf_evlist__id_add(evlist, evsel, cpu, thread, id); in perf_evlist__id_add_fd()
531 static void perf_evlist__set_sid_idx(struct perf_evlist *evlist, in perf_evlist__set_sid_idx() argument
537 if (evlist->cpus && cpu >= 0) in perf_evlist__set_sid_idx()
538 sid->cpu = evlist->cpus->map[cpu]; in perf_evlist__set_sid_idx()
541 if (!evsel->system_wide && evlist->threads && thread >= 0) in perf_evlist__set_sid_idx()
542 sid->tid = evlist->threads->map[thread]; in perf_evlist__set_sid_idx()
547 struct perf_sample_id *perf_evlist__id2sid(struct perf_evlist *evlist, u64 id) in perf_evlist__id2sid() argument
554 head = &evlist->heads[hash]; in perf_evlist__id2sid()
563 struct perf_evsel *perf_evlist__id2evsel(struct perf_evlist *evlist, u64 id) in perf_evlist__id2evsel() argument
567 if (evlist->nr_entries == 1) in perf_evlist__id2evsel()
568 return perf_evlist__first(evlist); in perf_evlist__id2evsel()
570 sid = perf_evlist__id2sid(evlist, id); in perf_evlist__id2evsel()
574 if (!perf_evlist__sample_id_all(evlist)) in perf_evlist__id2evsel()
575 return perf_evlist__first(evlist); in perf_evlist__id2evsel()
580 static int perf_evlist__event2id(struct perf_evlist *evlist, in perf_evlist__event2id() argument
589 if (evlist->id_pos >= n) in perf_evlist__event2id()
591 *id = array[evlist->id_pos]; in perf_evlist__event2id()
593 if (evlist->is_pos > n) in perf_evlist__event2id()
595 n -= evlist->is_pos; in perf_evlist__event2id()
601 static struct perf_evsel *perf_evlist__event2evsel(struct perf_evlist *evlist, in perf_evlist__event2evsel() argument
604 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__event2evsel()
610 if (evlist->nr_entries == 1) in perf_evlist__event2evsel()
617 if (perf_evlist__event2id(evlist, event, &id)) in perf_evlist__event2evsel()
625 head = &evlist->heads[hash]; in perf_evlist__event2evsel()
634 union perf_event *perf_evlist__mmap_read(struct perf_evlist *evlist, int idx) in perf_evlist__mmap_read() argument
636 struct perf_mmap *md = &evlist->mmap[idx]; in perf_evlist__mmap_read()
642 if (evlist->overwrite) { in perf_evlist__mmap_read()
701 static void perf_evlist__mmap_get(struct perf_evlist *evlist, int idx) in perf_evlist__mmap_get() argument
703 ++evlist->mmap[idx].refcnt; in perf_evlist__mmap_get()
706 static void perf_evlist__mmap_put(struct perf_evlist *evlist, int idx) in perf_evlist__mmap_put() argument
708 BUG_ON(evlist->mmap[idx].refcnt == 0); in perf_evlist__mmap_put()
710 if (--evlist->mmap[idx].refcnt == 0) in perf_evlist__mmap_put()
711 __perf_evlist__munmap(evlist, idx); in perf_evlist__mmap_put()
714 void perf_evlist__mmap_consume(struct perf_evlist *evlist, int idx) in perf_evlist__mmap_consume() argument
716 struct perf_mmap *md = &evlist->mmap[idx]; in perf_evlist__mmap_consume()
718 if (!evlist->overwrite) { in perf_evlist__mmap_consume()
725 perf_evlist__mmap_put(evlist, idx); in perf_evlist__mmap_consume()
728 static void __perf_evlist__munmap(struct perf_evlist *evlist, int idx) in __perf_evlist__munmap() argument
730 if (evlist->mmap[idx].base != NULL) { in __perf_evlist__munmap()
731 munmap(evlist->mmap[idx].base, evlist->mmap_len); in __perf_evlist__munmap()
732 evlist->mmap[idx].base = NULL; in __perf_evlist__munmap()
733 evlist->mmap[idx].refcnt = 0; in __perf_evlist__munmap()
737 void perf_evlist__munmap(struct perf_evlist *evlist) in perf_evlist__munmap() argument
741 if (evlist->mmap == NULL) in perf_evlist__munmap()
744 for (i = 0; i < evlist->nr_mmaps; i++) in perf_evlist__munmap()
745 __perf_evlist__munmap(evlist, i); in perf_evlist__munmap()
747 zfree(&evlist->mmap); in perf_evlist__munmap()
750 static int perf_evlist__alloc_mmap(struct perf_evlist *evlist) in perf_evlist__alloc_mmap() argument
752 evlist->nr_mmaps = cpu_map__nr(evlist->cpus); in perf_evlist__alloc_mmap()
753 if (cpu_map__empty(evlist->cpus)) in perf_evlist__alloc_mmap()
754 evlist->nr_mmaps = thread_map__nr(evlist->threads); in perf_evlist__alloc_mmap()
755 evlist->mmap = zalloc(evlist->nr_mmaps * sizeof(struct perf_mmap)); in perf_evlist__alloc_mmap()
756 return evlist->mmap != NULL ? 0 : -ENOMEM; in perf_evlist__alloc_mmap()
764 static int __perf_evlist__mmap(struct perf_evlist *evlist, int idx, in __perf_evlist__mmap() argument
780 evlist->mmap[idx].refcnt = 2; in __perf_evlist__mmap()
781 evlist->mmap[idx].prev = 0; in __perf_evlist__mmap()
782 evlist->mmap[idx].mask = mp->mask; in __perf_evlist__mmap()
783 evlist->mmap[idx].base = mmap(NULL, evlist->mmap_len, mp->prot, in __perf_evlist__mmap()
785 if (evlist->mmap[idx].base == MAP_FAILED) { in __perf_evlist__mmap()
788 evlist->mmap[idx].base = NULL; in __perf_evlist__mmap()
795 static int perf_evlist__mmap_per_evsel(struct perf_evlist *evlist, int idx, in perf_evlist__mmap_per_evsel() argument
801 evlist__for_each(evlist, evsel) { in perf_evlist__mmap_per_evsel()
811 if (__perf_evlist__mmap(evlist, idx, mp, *output) < 0) in perf_evlist__mmap_per_evsel()
817 perf_evlist__mmap_get(evlist, idx); in perf_evlist__mmap_per_evsel()
828 __perf_evlist__add_pollfd(evlist, fd, idx) < 0) { in perf_evlist__mmap_per_evsel()
829 perf_evlist__mmap_put(evlist, idx); in perf_evlist__mmap_per_evsel()
834 if (perf_evlist__id_add_fd(evlist, evsel, cpu, thread, in perf_evlist__mmap_per_evsel()
837 perf_evlist__set_sid_idx(evlist, evsel, idx, cpu, in perf_evlist__mmap_per_evsel()
845 static int perf_evlist__mmap_per_cpu(struct perf_evlist *evlist, in perf_evlist__mmap_per_cpu() argument
849 int nr_cpus = cpu_map__nr(evlist->cpus); in perf_evlist__mmap_per_cpu()
850 int nr_threads = thread_map__nr(evlist->threads); in perf_evlist__mmap_per_cpu()
857 if (perf_evlist__mmap_per_evsel(evlist, cpu, mp, cpu, in perf_evlist__mmap_per_cpu()
867 __perf_evlist__munmap(evlist, cpu); in perf_evlist__mmap_per_cpu()
871 static int perf_evlist__mmap_per_thread(struct perf_evlist *evlist, in perf_evlist__mmap_per_thread() argument
875 int nr_threads = thread_map__nr(evlist->threads); in perf_evlist__mmap_per_thread()
881 if (perf_evlist__mmap_per_evsel(evlist, thread, mp, 0, thread, in perf_evlist__mmap_per_thread()
890 __perf_evlist__munmap(evlist, thread); in perf_evlist__mmap_per_thread()
995 int perf_evlist__mmap(struct perf_evlist *evlist, unsigned int pages, in perf_evlist__mmap() argument
999 const struct cpu_map *cpus = evlist->cpus; in perf_evlist__mmap()
1000 const struct thread_map *threads = evlist->threads; in perf_evlist__mmap()
1005 if (evlist->mmap == NULL && perf_evlist__alloc_mmap(evlist) < 0) in perf_evlist__mmap()
1008 if (evlist->pollfd.entries == NULL && perf_evlist__alloc_pollfd(evlist) < 0) in perf_evlist__mmap()
1011 evlist->overwrite = overwrite; in perf_evlist__mmap()
1012 evlist->mmap_len = perf_evlist__mmap_size(pages); in perf_evlist__mmap()
1013 pr_debug("mmap size %zuB\n", evlist->mmap_len); in perf_evlist__mmap()
1014 mp.mask = evlist->mmap_len - page_size - 1; in perf_evlist__mmap()
1016 evlist__for_each(evlist, evsel) { in perf_evlist__mmap()
1024 return perf_evlist__mmap_per_thread(evlist, &mp); in perf_evlist__mmap()
1026 return perf_evlist__mmap_per_cpu(evlist, &mp); in perf_evlist__mmap()
1029 int perf_evlist__create_maps(struct perf_evlist *evlist, struct target *target) in perf_evlist__create_maps() argument
1031 evlist->threads = thread_map__new_str(target->pid, target->tid, in perf_evlist__create_maps()
1034 if (evlist->threads == NULL) in perf_evlist__create_maps()
1038 evlist->cpus = cpu_map__dummy_new(); in perf_evlist__create_maps()
1040 evlist->cpus = cpu_map__new(target->cpu_list); in perf_evlist__create_maps()
1042 if (evlist->cpus == NULL) in perf_evlist__create_maps()
1048 thread_map__delete(evlist->threads); in perf_evlist__create_maps()
1049 evlist->threads = NULL; in perf_evlist__create_maps()
1053 int perf_evlist__apply_filters(struct perf_evlist *evlist, struct perf_evsel **err_evsel) in perf_evlist__apply_filters() argument
1057 const int ncpus = cpu_map__nr(evlist->cpus), in perf_evlist__apply_filters()
1058 nthreads = thread_map__nr(evlist->threads); in perf_evlist__apply_filters()
1060 evlist__for_each(evlist, evsel) { in perf_evlist__apply_filters()
1074 int perf_evlist__set_filter(struct perf_evlist *evlist, const char *filter) in perf_evlist__set_filter() argument
1078 const int ncpus = cpu_map__nr(evlist->cpus), in perf_evlist__set_filter()
1079 nthreads = thread_map__nr(evlist->threads); in perf_evlist__set_filter()
1081 evlist__for_each(evlist, evsel) { in perf_evlist__set_filter()
1090 int perf_evlist__set_filter_pids(struct perf_evlist *evlist, size_t npids, pid_t *pids) in perf_evlist__set_filter_pids() argument
1111 ret = perf_evlist__set_filter(evlist, filter); in perf_evlist__set_filter_pids()
1117 int perf_evlist__set_filter_pid(struct perf_evlist *evlist, pid_t pid) in perf_evlist__set_filter_pid() argument
1119 return perf_evlist__set_filter_pids(evlist, 1, &pid); in perf_evlist__set_filter_pid()
1122 bool perf_evlist__valid_sample_type(struct perf_evlist *evlist) in perf_evlist__valid_sample_type() argument
1126 if (evlist->nr_entries == 1) in perf_evlist__valid_sample_type()
1129 if (evlist->id_pos < 0 || evlist->is_pos < 0) in perf_evlist__valid_sample_type()
1132 evlist__for_each(evlist, pos) { in perf_evlist__valid_sample_type()
1133 if (pos->id_pos != evlist->id_pos || in perf_evlist__valid_sample_type()
1134 pos->is_pos != evlist->is_pos) in perf_evlist__valid_sample_type()
1141 u64 __perf_evlist__combined_sample_type(struct perf_evlist *evlist) in __perf_evlist__combined_sample_type() argument
1145 if (evlist->combined_sample_type) in __perf_evlist__combined_sample_type()
1146 return evlist->combined_sample_type; in __perf_evlist__combined_sample_type()
1148 evlist__for_each(evlist, evsel) in __perf_evlist__combined_sample_type()
1149 evlist->combined_sample_type |= evsel->attr.sample_type; in __perf_evlist__combined_sample_type()
1151 return evlist->combined_sample_type; in __perf_evlist__combined_sample_type()
1154 u64 perf_evlist__combined_sample_type(struct perf_evlist *evlist) in perf_evlist__combined_sample_type() argument
1156 evlist->combined_sample_type = 0; in perf_evlist__combined_sample_type()
1157 return __perf_evlist__combined_sample_type(evlist); in perf_evlist__combined_sample_type()
1160 bool perf_evlist__valid_read_format(struct perf_evlist *evlist) in perf_evlist__valid_read_format() argument
1162 struct perf_evsel *first = perf_evlist__first(evlist), *pos = first; in perf_evlist__valid_read_format()
1166 evlist__for_each(evlist, pos) { in perf_evlist__valid_read_format()
1180 u64 perf_evlist__read_format(struct perf_evlist *evlist) in perf_evlist__read_format() argument
1182 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__read_format()
1186 u16 perf_evlist__id_hdr_size(struct perf_evlist *evlist) in perf_evlist__id_hdr_size() argument
1188 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__id_hdr_size()
1219 bool perf_evlist__valid_sample_id_all(struct perf_evlist *evlist) in perf_evlist__valid_sample_id_all() argument
1221 struct perf_evsel *first = perf_evlist__first(evlist), *pos = first; in perf_evlist__valid_sample_id_all()
1223 evlist__for_each_continue(evlist, pos) { in perf_evlist__valid_sample_id_all()
1231 bool perf_evlist__sample_id_all(struct perf_evlist *evlist) in perf_evlist__sample_id_all() argument
1233 struct perf_evsel *first = perf_evlist__first(evlist); in perf_evlist__sample_id_all()
1237 void perf_evlist__set_selected(struct perf_evlist *evlist, in perf_evlist__set_selected() argument
1240 evlist->selected = evsel; in perf_evlist__set_selected()
1243 void perf_evlist__close(struct perf_evlist *evlist) in perf_evlist__close() argument
1246 int ncpus = cpu_map__nr(evlist->cpus); in perf_evlist__close()
1247 int nthreads = thread_map__nr(evlist->threads); in perf_evlist__close()
1250 evlist__for_each_reverse(evlist, evsel) { in perf_evlist__close()
1256 static int perf_evlist__create_syswide_maps(struct perf_evlist *evlist) in perf_evlist__create_syswide_maps() argument
1269 evlist->cpus = cpu_map__new(NULL); in perf_evlist__create_syswide_maps()
1270 if (evlist->cpus == NULL) in perf_evlist__create_syswide_maps()
1273 evlist->threads = thread_map__new_dummy(); in perf_evlist__create_syswide_maps()
1274 if (evlist->threads == NULL) in perf_evlist__create_syswide_maps()
1281 cpu_map__delete(evlist->cpus); in perf_evlist__create_syswide_maps()
1282 evlist->cpus = NULL; in perf_evlist__create_syswide_maps()
1286 int perf_evlist__open(struct perf_evlist *evlist) in perf_evlist__open() argument
1295 if (evlist->threads == NULL && evlist->cpus == NULL) { in perf_evlist__open()
1296 err = perf_evlist__create_syswide_maps(evlist); in perf_evlist__open()
1301 perf_evlist__update_id_pos(evlist); in perf_evlist__open()
1303 evlist__for_each(evlist, evsel) { in perf_evlist__open()
1304 err = perf_evsel__open(evsel, evlist->cpus, evlist->threads); in perf_evlist__open()
1311 perf_evlist__close(evlist); in perf_evlist__open()
1316 int perf_evlist__prepare_workload(struct perf_evlist *evlist, struct target *target, in perf_evlist__prepare_workload() argument
1333 evlist->workload.pid = fork(); in perf_evlist__prepare_workload()
1334 if (evlist->workload.pid < 0) { in perf_evlist__prepare_workload()
1339 if (!evlist->workload.pid) { in perf_evlist__prepare_workload()
1398 if (evlist->threads == NULL) { in perf_evlist__prepare_workload()
1403 evlist->threads->map[0] = evlist->workload.pid; in perf_evlist__prepare_workload()
1417 evlist->workload.cork_fd = go_pipe[1]; in perf_evlist__prepare_workload()
1430 int perf_evlist__start_workload(struct perf_evlist *evlist) in perf_evlist__start_workload() argument
1432 if (evlist->workload.cork_fd > 0) { in perf_evlist__start_workload()
1438 ret = write(evlist->workload.cork_fd, &bf, 1); in perf_evlist__start_workload()
1442 close(evlist->workload.cork_fd); in perf_evlist__start_workload()
1449 int perf_evlist__parse_sample(struct perf_evlist *evlist, union perf_event *event, in perf_evlist__parse_sample() argument
1452 struct perf_evsel *evsel = perf_evlist__event2evsel(evlist, event); in perf_evlist__parse_sample()
1459 size_t perf_evlist__fprintf(struct perf_evlist *evlist, FILE *fp) in perf_evlist__fprintf() argument
1464 evlist__for_each(evlist, evsel) { in perf_evlist__fprintf()
1472 int perf_evlist__strerror_open(struct perf_evlist *evlist __maybe_unused, in perf_evlist__strerror_open()
1508 int perf_evlist__strerror_mmap(struct perf_evlist *evlist, int err, char *buf, size_t size) in perf_evlist__strerror_mmap() argument
1511 int pages_attempted = evlist->mmap_len / 1024, pages_max_per_user, printed = 0; in perf_evlist__strerror_mmap()
1539 void perf_evlist__to_front(struct perf_evlist *evlist, in perf_evlist__to_front() argument
1545 if (move_evsel == perf_evlist__first(evlist)) in perf_evlist__to_front()
1548 evlist__for_each_safe(evlist, n, evsel) { in perf_evlist__to_front()
1553 list_splice(&move, &evlist->entries); in perf_evlist__to_front()
1556 void perf_evlist__set_tracking_event(struct perf_evlist *evlist, in perf_evlist__set_tracking_event() argument
1564 evlist__for_each(evlist, evsel) { in perf_evlist__set_tracking_event()