Lines Matching refs:evlist

55 void evlist__init(struct evlist *evlist, struct perf_cpu_map *cpus,  in evlist__init()  argument
58 perf_evlist__init(&evlist->core); in evlist__init()
59 perf_evlist__set_maps(&evlist->core, cpus, threads); in evlist__init()
60 fdarray__init(&evlist->core.pollfd, 64); in evlist__init()
61 evlist->workload.pid = -1; in evlist__init()
62 evlist->bkw_mmap_state = BKW_MMAP_NOTREADY; in evlist__init()
65 struct evlist *evlist__new(void) in evlist__new()
67 struct evlist *evlist = zalloc(sizeof(*evlist)); in evlist__new() local
69 if (evlist != NULL) in evlist__new()
70 evlist__init(evlist, NULL, NULL); in evlist__new()
72 return evlist; in evlist__new()
75 struct evlist *perf_evlist__new_default(void) in perf_evlist__new_default()
77 struct evlist *evlist = evlist__new(); in perf_evlist__new_default() local
79 if (evlist && perf_evlist__add_default(evlist)) { in perf_evlist__new_default()
80 evlist__delete(evlist); in perf_evlist__new_default()
81 evlist = NULL; in perf_evlist__new_default()
84 return evlist; in perf_evlist__new_default()
87 struct evlist *perf_evlist__new_dummy(void) in perf_evlist__new_dummy()
89 struct evlist *evlist = evlist__new(); in perf_evlist__new_dummy() local
91 if (evlist && perf_evlist__add_dummy(evlist)) { in perf_evlist__new_dummy()
92 evlist__delete(evlist); in perf_evlist__new_dummy()
93 evlist = NULL; in perf_evlist__new_dummy()
96 return evlist; in perf_evlist__new_dummy()
106 void perf_evlist__set_id_pos(struct evlist *evlist) in perf_evlist__set_id_pos() argument
108 struct evsel *first = evlist__first(evlist); in perf_evlist__set_id_pos()
110 evlist->id_pos = first->id_pos; in perf_evlist__set_id_pos()
111 evlist->is_pos = first->is_pos; in perf_evlist__set_id_pos()
114 static void perf_evlist__update_id_pos(struct evlist *evlist) in perf_evlist__update_id_pos() argument
118 evlist__for_each_entry(evlist, evsel) in perf_evlist__update_id_pos()
121 perf_evlist__set_id_pos(evlist); in perf_evlist__update_id_pos()
124 static void evlist__purge(struct evlist *evlist) in evlist__purge() argument
128 evlist__for_each_entry_safe(evlist, n, pos) { in evlist__purge()
130 pos->evlist = NULL; in evlist__purge()
134 evlist->core.nr_entries = 0; in evlist__purge()
137 void evlist__exit(struct evlist *evlist) in evlist__exit() argument
139 zfree(&evlist->mmap); in evlist__exit()
140 zfree(&evlist->overwrite_mmap); in evlist__exit()
141 fdarray__exit(&evlist->core.pollfd); in evlist__exit()
144 void evlist__delete(struct evlist *evlist) in evlist__delete() argument
146 if (evlist == NULL) in evlist__delete()
149 evlist__munmap(evlist); in evlist__delete()
150 evlist__close(evlist); in evlist__delete()
151 perf_cpu_map__put(evlist->core.cpus); in evlist__delete()
152 perf_thread_map__put(evlist->core.threads); in evlist__delete()
153 evlist->core.cpus = NULL; in evlist__delete()
154 evlist->core.threads = NULL; in evlist__delete()
155 evlist__purge(evlist); in evlist__delete()
156 evlist__exit(evlist); in evlist__delete()
157 free(evlist); in evlist__delete()
160 void evlist__add(struct evlist *evlist, struct evsel *entry) in evlist__add() argument
162 entry->evlist = evlist; in evlist__add()
163 entry->idx = evlist->core.nr_entries; in evlist__add()
166 perf_evlist__add(&evlist->core, &entry->core); in evlist__add()
168 if (evlist->core.nr_entries == 1) in evlist__add()
169 perf_evlist__set_id_pos(evlist); in evlist__add()
172 void evlist__remove(struct evlist *evlist, struct evsel *evsel) in evlist__remove() argument
174 evsel->evlist = NULL; in evlist__remove()
175 perf_evlist__remove(&evlist->core, &evsel->core); in evlist__remove()
178 void perf_evlist__splice_list_tail(struct evlist *evlist, in perf_evlist__splice_list_tail() argument
185 evlist__add(evlist, evsel); in perf_evlist__splice_list_tail()
203 void perf_evlist__set_leader(struct evlist *evlist) in perf_evlist__set_leader() argument
205 if (evlist->core.nr_entries) { in perf_evlist__set_leader()
206 evlist->nr_groups = evlist->core.nr_entries > 1 ? 1 : 0; in perf_evlist__set_leader()
207 __perf_evlist__set_leader(&evlist->core.entries); in perf_evlist__set_leader()
211 int __perf_evlist__add_default(struct evlist *evlist, bool precise) in __perf_evlist__add_default() argument
218 evlist__add(evlist, evsel); in __perf_evlist__add_default()
222 int perf_evlist__add_dummy(struct evlist *evlist) in perf_evlist__add_dummy() argument
229 struct evsel *evsel = perf_evsel__new_idx(&attr, evlist->core.nr_entries); in perf_evlist__add_dummy()
234 evlist__add(evlist, evsel); in perf_evlist__add_dummy()
238 static int evlist__add_attrs(struct evlist *evlist, in evlist__add_attrs() argument
246 evsel = perf_evsel__new_idx(attrs + i, evlist->core.nr_entries + i); in evlist__add_attrs()
252 perf_evlist__splice_list_tail(evlist, &head); in evlist__add_attrs()
262 int __perf_evlist__add_default_attrs(struct evlist *evlist, in __perf_evlist__add_default_attrs() argument
270 return evlist__add_attrs(evlist, attrs, nr_attrs); in __perf_evlist__add_default_attrs()
274 perf_evlist__find_tracepoint_by_id(struct evlist *evlist, int id) in perf_evlist__find_tracepoint_by_id() argument
278 evlist__for_each_entry(evlist, evsel) { in perf_evlist__find_tracepoint_by_id()
288 perf_evlist__find_tracepoint_by_name(struct evlist *evlist, in perf_evlist__find_tracepoint_by_name() argument
293 evlist__for_each_entry(evlist, evsel) { in perf_evlist__find_tracepoint_by_name()
302 int perf_evlist__add_newtp(struct evlist *evlist, in perf_evlist__add_newtp() argument
311 evlist__add(evlist, evsel); in perf_evlist__add_newtp()
315 static int perf_evlist__nr_threads(struct evlist *evlist, in perf_evlist__nr_threads() argument
321 return perf_thread_map__nr(evlist->core.threads); in perf_evlist__nr_threads()
324 void evlist__disable(struct evlist *evlist) in evlist__disable() argument
328 evlist__for_each_entry(evlist, pos) { in evlist__disable()
334 evlist->enabled = false; in evlist__disable()
337 void evlist__enable(struct evlist *evlist) in evlist__enable() argument
341 evlist__for_each_entry(evlist, pos) { in evlist__enable()
347 evlist->enabled = true; in evlist__enable()
350 void perf_evlist__toggle_enable(struct evlist *evlist) in perf_evlist__toggle_enable() argument
352 (evlist->enabled ? evlist__disable : evlist__enable)(evlist); in perf_evlist__toggle_enable()
355 static int perf_evlist__enable_event_cpu(struct evlist *evlist, in perf_evlist__enable_event_cpu() argument
359 int nr_threads = perf_evlist__nr_threads(evlist, evsel); in perf_evlist__enable_event_cpu()
372 static int perf_evlist__enable_event_thread(struct evlist *evlist, in perf_evlist__enable_event_thread() argument
377 int nr_cpus = perf_cpu_map__nr(evlist->core.cpus); in perf_evlist__enable_event_thread()
390 int perf_evlist__enable_event_idx(struct evlist *evlist, in perf_evlist__enable_event_idx() argument
393 bool per_cpu_mmaps = !perf_cpu_map__empty(evlist->core.cpus); in perf_evlist__enable_event_idx()
396 return perf_evlist__enable_event_cpu(evlist, evsel, idx); in perf_evlist__enable_event_idx()
398 return perf_evlist__enable_event_thread(evlist, evsel, idx); in perf_evlist__enable_event_idx()
401 int evlist__add_pollfd(struct evlist *evlist, int fd) in evlist__add_pollfd() argument
403 return perf_evlist__add_pollfd(&evlist->core, fd, NULL, POLLIN); in evlist__add_pollfd()
415 int evlist__filter_pollfd(struct evlist *evlist, short revents_and_mask) in evlist__filter_pollfd() argument
417 return fdarray__filter(&evlist->core.pollfd, revents_and_mask, in evlist__filter_pollfd()
421 int evlist__poll(struct evlist *evlist, int timeout) in evlist__poll() argument
423 return perf_evlist__poll(&evlist->core, timeout); in evlist__poll()
426 static void perf_evlist__set_sid_idx(struct evlist *evlist, in perf_evlist__set_sid_idx() argument
432 if (evlist->core.cpus && cpu >= 0) in perf_evlist__set_sid_idx()
433 sid->cpu = evlist->core.cpus->map[cpu]; in perf_evlist__set_sid_idx()
436 if (!evsel->core.system_wide && evlist->core.threads && thread >= 0) in perf_evlist__set_sid_idx()
437 sid->tid = perf_thread_map__pid(evlist->core.threads, thread); in perf_evlist__set_sid_idx()
442 struct perf_sample_id *perf_evlist__id2sid(struct evlist *evlist, u64 id) in perf_evlist__id2sid() argument
449 head = &evlist->core.heads[hash]; in perf_evlist__id2sid()
458 struct evsel *perf_evlist__id2evsel(struct evlist *evlist, u64 id) in perf_evlist__id2evsel() argument
462 if (evlist->core.nr_entries == 1 || !id) in perf_evlist__id2evsel()
463 return evlist__first(evlist); in perf_evlist__id2evsel()
465 sid = perf_evlist__id2sid(evlist, id); in perf_evlist__id2evsel()
469 if (!perf_evlist__sample_id_all(evlist)) in perf_evlist__id2evsel()
470 return evlist__first(evlist); in perf_evlist__id2evsel()
475 struct evsel *perf_evlist__id2evsel_strict(struct evlist *evlist, in perf_evlist__id2evsel_strict() argument
483 sid = perf_evlist__id2sid(evlist, id); in perf_evlist__id2evsel_strict()
490 static int perf_evlist__event2id(struct evlist *evlist, in perf_evlist__event2id() argument
499 if (evlist->id_pos >= n) in perf_evlist__event2id()
501 *id = array[evlist->id_pos]; in perf_evlist__event2id()
503 if (evlist->is_pos > n) in perf_evlist__event2id()
505 n -= evlist->is_pos; in perf_evlist__event2id()
511 struct evsel *perf_evlist__event2evsel(struct evlist *evlist, in perf_evlist__event2evsel() argument
514 struct evsel *first = evlist__first(evlist); in perf_evlist__event2evsel()
520 if (evlist->core.nr_entries == 1) in perf_evlist__event2evsel()
527 if (perf_evlist__event2id(evlist, event, &id)) in perf_evlist__event2evsel()
535 head = &evlist->core.heads[hash]; in perf_evlist__event2evsel()
544 static int perf_evlist__set_paused(struct evlist *evlist, bool value) in perf_evlist__set_paused() argument
548 if (!evlist->overwrite_mmap) in perf_evlist__set_paused()
551 for (i = 0; i < evlist->core.nr_mmaps; i++) { in perf_evlist__set_paused()
552 int fd = evlist->overwrite_mmap[i].core.fd; in perf_evlist__set_paused()
564 static int perf_evlist__pause(struct evlist *evlist) in perf_evlist__pause() argument
566 return perf_evlist__set_paused(evlist, true); in perf_evlist__pause()
569 static int perf_evlist__resume(struct evlist *evlist) in perf_evlist__resume() argument
571 return perf_evlist__set_paused(evlist, false); in perf_evlist__resume()
574 static void evlist__munmap_nofree(struct evlist *evlist) in evlist__munmap_nofree() argument
578 if (evlist->mmap) in evlist__munmap_nofree()
579 for (i = 0; i < evlist->core.nr_mmaps; i++) in evlist__munmap_nofree()
580 perf_mmap__munmap(&evlist->mmap[i]); in evlist__munmap_nofree()
582 if (evlist->overwrite_mmap) in evlist__munmap_nofree()
583 for (i = 0; i < evlist->core.nr_mmaps; i++) in evlist__munmap_nofree()
584 perf_mmap__munmap(&evlist->overwrite_mmap[i]); in evlist__munmap_nofree()
587 void evlist__munmap(struct evlist *evlist) in evlist__munmap() argument
589 evlist__munmap_nofree(evlist); in evlist__munmap()
590 zfree(&evlist->mmap); in evlist__munmap()
591 zfree(&evlist->overwrite_mmap); in evlist__munmap()
594 static struct mmap *evlist__alloc_mmap(struct evlist *evlist, in evlist__alloc_mmap() argument
600 evlist->core.nr_mmaps = perf_cpu_map__nr(evlist->core.cpus); in evlist__alloc_mmap()
601 if (perf_cpu_map__empty(evlist->core.cpus)) in evlist__alloc_mmap()
602 evlist->core.nr_mmaps = perf_thread_map__nr(evlist->core.threads); in evlist__alloc_mmap()
603 map = zalloc(evlist->core.nr_mmaps * sizeof(struct mmap)); in evlist__alloc_mmap()
607 for (i = 0; i < evlist->core.nr_mmaps; i++) { in evlist__alloc_mmap()
625 perf_evlist__should_poll(struct evlist *evlist __maybe_unused, in perf_evlist__should_poll()
633 static int evlist__mmap_per_evsel(struct evlist *evlist, int idx, in evlist__mmap_per_evsel() argument
639 int evlist_cpu = cpu_map__cpu(evlist->core.cpus, cpu_idx); in evlist__mmap_per_evsel()
641 evlist__for_each_entry(evlist, evsel) { in evlist__mmap_per_evsel()
642 struct mmap *maps = evlist->mmap; in evlist__mmap_per_evsel()
650 maps = evlist->overwrite_mmap; in evlist__mmap_per_evsel()
653 maps = evlist__alloc_mmap(evlist, true); in evlist__mmap_per_evsel()
656 evlist->overwrite_mmap = maps; in evlist__mmap_per_evsel()
657 if (evlist->bkw_mmap_state == BKW_MMAP_NOTREADY) in evlist__mmap_per_evsel()
658 perf_evlist__toggle_bkw_mmap(evlist, BKW_MMAP_RUNNING); in evlist__mmap_per_evsel()
684 revent = perf_evlist__should_poll(evlist, evsel) ? POLLIN : 0; in evlist__mmap_per_evsel()
694 perf_evlist__add_pollfd(&evlist->core, fd, &maps[idx], revent) < 0) { in evlist__mmap_per_evsel()
700 if (perf_evlist__id_add_fd(&evlist->core, &evsel->core, cpu, thread, in evlist__mmap_per_evsel()
703 perf_evlist__set_sid_idx(evlist, evsel, idx, cpu, in evlist__mmap_per_evsel()
711 static int evlist__mmap_per_cpu(struct evlist *evlist, in evlist__mmap_per_cpu() argument
715 int nr_cpus = perf_cpu_map__nr(evlist->core.cpus); in evlist__mmap_per_cpu()
716 int nr_threads = perf_thread_map__nr(evlist->core.threads); in evlist__mmap_per_cpu()
723 auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, cpu, in evlist__mmap_per_cpu()
727 if (evlist__mmap_per_evsel(evlist, cpu, mp, cpu, in evlist__mmap_per_cpu()
736 evlist__munmap_nofree(evlist); in evlist__mmap_per_cpu()
740 static int evlist__mmap_per_thread(struct evlist *evlist, in evlist__mmap_per_thread() argument
744 int nr_threads = perf_thread_map__nr(evlist->core.threads); in evlist__mmap_per_thread()
751 auxtrace_mmap_params__set_idx(&mp->auxtrace_mp, evlist, thread, in evlist__mmap_per_thread()
754 if (evlist__mmap_per_evsel(evlist, thread, mp, 0, thread, in evlist__mmap_per_thread()
762 evlist__munmap_nofree(evlist); in evlist__mmap_per_thread()
888 int evlist__mmap_ex(struct evlist *evlist, unsigned int pages, in evlist__mmap_ex() argument
894 const struct perf_cpu_map *cpus = evlist->core.cpus; in evlist__mmap_ex()
895 const struct perf_thread_map *threads = evlist->core.threads; in evlist__mmap_ex()
904 if (!evlist->mmap) in evlist__mmap_ex()
905 evlist->mmap = evlist__alloc_mmap(evlist, false); in evlist__mmap_ex()
906 if (!evlist->mmap) in evlist__mmap_ex()
909 if (evlist->core.pollfd.entries == NULL && perf_evlist__alloc_pollfd(&evlist->core) < 0) in evlist__mmap_ex()
912 evlist->core.mmap_len = evlist__mmap_size(pages); in evlist__mmap_ex()
913 pr_debug("mmap size %zuB\n", evlist->core.mmap_len); in evlist__mmap_ex()
914 mp.mask = evlist->core.mmap_len - page_size - 1; in evlist__mmap_ex()
916 auxtrace_mmap_params__init(&mp.auxtrace_mp, evlist->core.mmap_len, in evlist__mmap_ex()
919 evlist__for_each_entry(evlist, evsel) { in evlist__mmap_ex()
927 return evlist__mmap_per_thread(evlist, &mp); in evlist__mmap_ex()
929 return evlist__mmap_per_cpu(evlist, &mp); in evlist__mmap_ex()
932 int evlist__mmap(struct evlist *evlist, unsigned int pages) in evlist__mmap() argument
934 return evlist__mmap_ex(evlist, pages, 0, false, 0, PERF_AFFINITY_SYS, 1, 0); in evlist__mmap()
937 int perf_evlist__create_maps(struct evlist *evlist, struct target *target) in perf_evlist__create_maps() argument
975 evlist->core.has_user_cpus = !!target->cpu_list; in perf_evlist__create_maps()
977 perf_evlist__set_maps(&evlist->core, cpus, threads); in perf_evlist__create_maps()
986 void __perf_evlist__set_sample_bit(struct evlist *evlist, in __perf_evlist__set_sample_bit() argument
991 evlist__for_each_entry(evlist, evsel) in __perf_evlist__set_sample_bit()
995 void __perf_evlist__reset_sample_bit(struct evlist *evlist, in __perf_evlist__reset_sample_bit() argument
1000 evlist__for_each_entry(evlist, evsel) in __perf_evlist__reset_sample_bit()
1004 int perf_evlist__apply_filters(struct evlist *evlist, struct evsel **err_evsel) in perf_evlist__apply_filters() argument
1009 evlist__for_each_entry(evlist, evsel) { in perf_evlist__apply_filters()
1027 int perf_evlist__set_tp_filter(struct evlist *evlist, const char *filter) in perf_evlist__set_tp_filter() argument
1032 evlist__for_each_entry(evlist, evsel) { in perf_evlist__set_tp_filter()
1044 int perf_evlist__set_tp_filter_pids(struct evlist *evlist, size_t npids, pid_t *pids) in perf_evlist__set_tp_filter_pids() argument
1065 ret = perf_evlist__set_tp_filter(evlist, filter); in perf_evlist__set_tp_filter_pids()
1071 int perf_evlist__set_tp_filter_pid(struct evlist *evlist, pid_t pid) in perf_evlist__set_tp_filter_pid() argument
1073 return perf_evlist__set_tp_filter_pids(evlist, 1, &pid); in perf_evlist__set_tp_filter_pid()
1076 bool perf_evlist__valid_sample_type(struct evlist *evlist) in perf_evlist__valid_sample_type() argument
1080 if (evlist->core.nr_entries == 1) in perf_evlist__valid_sample_type()
1083 if (evlist->id_pos < 0 || evlist->is_pos < 0) in perf_evlist__valid_sample_type()
1086 evlist__for_each_entry(evlist, pos) { in perf_evlist__valid_sample_type()
1087 if (pos->id_pos != evlist->id_pos || in perf_evlist__valid_sample_type()
1088 pos->is_pos != evlist->is_pos) in perf_evlist__valid_sample_type()
1095 u64 __perf_evlist__combined_sample_type(struct evlist *evlist) in __perf_evlist__combined_sample_type() argument
1099 if (evlist->combined_sample_type) in __perf_evlist__combined_sample_type()
1100 return evlist->combined_sample_type; in __perf_evlist__combined_sample_type()
1102 evlist__for_each_entry(evlist, evsel) in __perf_evlist__combined_sample_type()
1103 evlist->combined_sample_type |= evsel->core.attr.sample_type; in __perf_evlist__combined_sample_type()
1105 return evlist->combined_sample_type; in __perf_evlist__combined_sample_type()
1108 u64 perf_evlist__combined_sample_type(struct evlist *evlist) in perf_evlist__combined_sample_type() argument
1110 evlist->combined_sample_type = 0; in perf_evlist__combined_sample_type()
1111 return __perf_evlist__combined_sample_type(evlist); in perf_evlist__combined_sample_type()
1114 u64 perf_evlist__combined_branch_type(struct evlist *evlist) in perf_evlist__combined_branch_type() argument
1119 evlist__for_each_entry(evlist, evsel) in perf_evlist__combined_branch_type()
1124 bool perf_evlist__valid_read_format(struct evlist *evlist) in perf_evlist__valid_read_format() argument
1126 struct evsel *first = evlist__first(evlist), *pos = first; in perf_evlist__valid_read_format()
1130 evlist__for_each_entry(evlist, pos) { in perf_evlist__valid_read_format()
1144 u16 perf_evlist__id_hdr_size(struct evlist *evlist) in perf_evlist__id_hdr_size() argument
1146 struct evsel *first = evlist__first(evlist); in perf_evlist__id_hdr_size()
1177 bool perf_evlist__valid_sample_id_all(struct evlist *evlist) in perf_evlist__valid_sample_id_all() argument
1179 struct evsel *first = evlist__first(evlist), *pos = first; in perf_evlist__valid_sample_id_all()
1181 evlist__for_each_entry_continue(evlist, pos) { in perf_evlist__valid_sample_id_all()
1189 bool perf_evlist__sample_id_all(struct evlist *evlist) in perf_evlist__sample_id_all() argument
1191 struct evsel *first = evlist__first(evlist); in perf_evlist__sample_id_all()
1195 void perf_evlist__set_selected(struct evlist *evlist, in perf_evlist__set_selected() argument
1198 evlist->selected = evsel; in perf_evlist__set_selected()
1201 void evlist__close(struct evlist *evlist) in evlist__close() argument
1205 evlist__for_each_entry_reverse(evlist, evsel) in evlist__close()
1209 static int perf_evlist__create_syswide_maps(struct evlist *evlist) in perf_evlist__create_syswide_maps() argument
1232 perf_evlist__set_maps(&evlist->core, cpus, threads); in perf_evlist__create_syswide_maps()
1240 int evlist__open(struct evlist *evlist) in evlist__open() argument
1249 if (evlist->core.threads == NULL && evlist->core.cpus == NULL) { in evlist__open()
1250 err = perf_evlist__create_syswide_maps(evlist); in evlist__open()
1255 perf_evlist__update_id_pos(evlist); in evlist__open()
1257 evlist__for_each_entry(evlist, evsel) { in evlist__open()
1265 evlist__close(evlist); in evlist__open()
1270 int perf_evlist__prepare_workload(struct evlist *evlist, struct target *target, in perf_evlist__prepare_workload() argument
1287 evlist->workload.pid = fork(); in perf_evlist__prepare_workload()
1288 if (evlist->workload.pid < 0) { in perf_evlist__prepare_workload()
1293 if (!evlist->workload.pid) { in perf_evlist__prepare_workload()
1352 if (evlist->core.threads == NULL) { in perf_evlist__prepare_workload()
1357 perf_thread_map__set_pid(evlist->core.threads, 0, evlist->workload.pid); in perf_evlist__prepare_workload()
1371 evlist->workload.cork_fd = go_pipe[1]; in perf_evlist__prepare_workload()
1384 int perf_evlist__start_workload(struct evlist *evlist) in perf_evlist__start_workload() argument
1386 if (evlist->workload.cork_fd > 0) { in perf_evlist__start_workload()
1392 ret = write(evlist->workload.cork_fd, &bf, 1); in perf_evlist__start_workload()
1396 close(evlist->workload.cork_fd); in perf_evlist__start_workload()
1403 int perf_evlist__parse_sample(struct evlist *evlist, union perf_event *event, in perf_evlist__parse_sample() argument
1406 struct evsel *evsel = perf_evlist__event2evsel(evlist, event); in perf_evlist__parse_sample()
1413 int perf_evlist__parse_sample_timestamp(struct evlist *evlist, in perf_evlist__parse_sample_timestamp() argument
1417 struct evsel *evsel = perf_evlist__event2evsel(evlist, event); in perf_evlist__parse_sample_timestamp()
1424 int perf_evlist__strerror_open(struct evlist *evlist, in perf_evlist__strerror_open() argument
1453 struct evsel *first = evlist__first(evlist); in perf_evlist__strerror_open()
1478 int perf_evlist__strerror_mmap(struct evlist *evlist, int err, char *buf, size_t size) in perf_evlist__strerror_mmap() argument
1481 int pages_attempted = evlist->core.mmap_len / 1024, pages_max_per_user, printed = 0; in perf_evlist__strerror_mmap()
1509 void perf_evlist__to_front(struct evlist *evlist, in perf_evlist__to_front() argument
1515 if (move_evsel == evlist__first(evlist)) in perf_evlist__to_front()
1518 evlist__for_each_entry_safe(evlist, n, evsel) { in perf_evlist__to_front()
1523 list_splice(&move, &evlist->core.entries); in perf_evlist__to_front()
1526 void perf_evlist__set_tracking_event(struct evlist *evlist, in perf_evlist__set_tracking_event() argument
1534 evlist__for_each_entry(evlist, evsel) { in perf_evlist__set_tracking_event()
1543 perf_evlist__find_evsel_by_str(struct evlist *evlist, in perf_evlist__find_evsel_by_str() argument
1548 evlist__for_each_entry(evlist, evsel) { in perf_evlist__find_evsel_by_str()
1558 void perf_evlist__toggle_bkw_mmap(struct evlist *evlist, in perf_evlist__toggle_bkw_mmap() argument
1561 enum bkw_mmap_state old_state = evlist->bkw_mmap_state; in perf_evlist__toggle_bkw_mmap()
1568 if (!evlist->overwrite_mmap) in perf_evlist__toggle_bkw_mmap()
1598 evlist->bkw_mmap_state = state; in perf_evlist__toggle_bkw_mmap()
1602 perf_evlist__pause(evlist); in perf_evlist__toggle_bkw_mmap()
1605 perf_evlist__resume(evlist); in perf_evlist__toggle_bkw_mmap()
1616 bool perf_evlist__exclude_kernel(struct evlist *evlist) in perf_evlist__exclude_kernel() argument
1620 evlist__for_each_entry(evlist, evsel) { in perf_evlist__exclude_kernel()
1633 void perf_evlist__force_leader(struct evlist *evlist) in perf_evlist__force_leader() argument
1635 if (!evlist->nr_groups) { in perf_evlist__force_leader()
1636 struct evsel *leader = evlist__first(evlist); in perf_evlist__force_leader()
1638 perf_evlist__set_leader(evlist); in perf_evlist__force_leader()
1643 struct evsel *perf_evlist__reset_weak_group(struct evlist *evsel_list, in perf_evlist__reset_weak_group()
1670 int perf_evlist__add_sb_event(struct evlist **evlist, in perf_evlist__add_sb_event() argument
1676 bool new_evlist = (*evlist) == NULL; in perf_evlist__add_sb_event()
1678 if (*evlist == NULL) in perf_evlist__add_sb_event()
1679 *evlist = evlist__new(); in perf_evlist__add_sb_event()
1680 if (*evlist == NULL) in perf_evlist__add_sb_event()
1688 evsel = perf_evsel__new_idx(attr, (*evlist)->core.nr_entries); in perf_evlist__add_sb_event()
1694 evlist__add(*evlist, evsel); in perf_evlist__add_sb_event()
1699 evlist__delete(*evlist); in perf_evlist__add_sb_event()
1700 *evlist = NULL; in perf_evlist__add_sb_event()
1707 struct evlist *evlist = arg; in perf_evlist__poll_thread() local
1722 if (evlist->thread.done) in perf_evlist__poll_thread()
1726 evlist__poll(evlist, 1000); in perf_evlist__poll_thread()
1728 for (i = 0; i < evlist->core.nr_mmaps; i++) { in perf_evlist__poll_thread()
1729 struct mmap *map = &evlist->mmap[i]; in perf_evlist__poll_thread()
1735 struct evsel *evsel = perf_evlist__event2evsel(evlist, event); in perf_evlist__poll_thread()
1754 int perf_evlist__start_sb_thread(struct evlist *evlist, in perf_evlist__start_sb_thread() argument
1759 if (!evlist) in perf_evlist__start_sb_thread()
1762 if (perf_evlist__create_maps(evlist, target)) in perf_evlist__start_sb_thread()
1765 evlist__for_each_entry(evlist, counter) { in perf_evlist__start_sb_thread()
1766 if (evsel__open(counter, evlist->core.cpus, in perf_evlist__start_sb_thread()
1767 evlist->core.threads) < 0) in perf_evlist__start_sb_thread()
1771 if (evlist__mmap(evlist, UINT_MAX)) in perf_evlist__start_sb_thread()
1774 evlist__for_each_entry(evlist, counter) { in perf_evlist__start_sb_thread()
1779 evlist->thread.done = 0; in perf_evlist__start_sb_thread()
1780 if (pthread_create(&evlist->thread.th, NULL, perf_evlist__poll_thread, evlist)) in perf_evlist__start_sb_thread()
1786 evlist__delete(evlist); in perf_evlist__start_sb_thread()
1787 evlist = NULL; in perf_evlist__start_sb_thread()
1791 void perf_evlist__stop_sb_thread(struct evlist *evlist) in perf_evlist__stop_sb_thread() argument
1793 if (!evlist) in perf_evlist__stop_sb_thread()
1795 evlist->thread.done = 1; in perf_evlist__stop_sb_thread()
1796 pthread_join(evlist->thread.th, NULL); in perf_evlist__stop_sb_thread()
1797 evlist__delete(evlist); in perf_evlist__stop_sb_thread()