Lines Matching refs:evsel

3 #include <perf/evsel.h>
9 #include <internal/evsel.h>
37 struct perf_evsel *evsel)
39 if (evsel->system_wide) {
40 /* System wide: set the cpu map of the evsel to all online CPUs. */
41 perf_cpu_map__put(evsel->cpus);
42 evsel->cpus = perf_cpu_map__new_online_cpus();
43 } else if (evlist->has_user_cpus && evsel->is_pmu_core) {
48 perf_cpu_map__put(evsel->cpus);
49 evsel->cpus = perf_cpu_map__intersect(evlist->user_requested_cpus, evsel->own_cpus);
50 } else if (!evsel->own_cpus || evlist->has_user_cpus ||
51 (!evsel->requires_cpu && perf_cpu_map__has_any_cpu(evlist->user_requested_cpus))) {
59 perf_cpu_map__put(evsel->cpus);
60 evsel->cpus = perf_cpu_map__get(evlist->user_requested_cpus);
61 } else if (evsel->cpus != evsel->own_cpus) {
64 * the evsel's. Reset it back to the PMU cpu map.
66 perf_cpu_map__put(evsel->cpus);
67 evsel->cpus = perf_cpu_map__get(evsel->own_cpus);
70 if (evsel->system_wide) {
71 perf_thread_map__put(evsel->threads);
72 evsel->threads = perf_thread_map__new_dummy();
74 perf_thread_map__put(evsel->threads);
75 evsel->threads = perf_thread_map__get(evlist->threads);
78 evlist->all_cpus = perf_cpu_map__merge(evlist->all_cpus, evsel->cpus);
83 struct perf_evsel *evsel;
87 perf_evlist__for_each_evsel(evlist, evsel)
88 __perf_evlist__propagate_maps(evlist, evsel);
92 struct perf_evsel *evsel)
94 evsel->idx = evlist->nr_entries;
95 list_add_tail(&evsel->node, &evlist->entries);
99 __perf_evlist__propagate_maps(evlist, evsel);
103 struct perf_evsel *evsel)
105 list_del_init(&evsel->node);
200 struct perf_evsel *evsel;
203 perf_evlist__for_each_entry(evlist, evsel) {
204 err = perf_evsel__open(evsel, evsel->cpus, evsel->threads);
218 struct perf_evsel *evsel;
220 perf_evlist__for_each_entry_reverse(evlist, evsel)
221 perf_evsel__close(evsel);
226 struct perf_evsel *evsel;
228 perf_evlist__for_each_entry(evlist, evsel)
229 perf_evsel__enable(evsel);
234 struct perf_evsel *evsel;
236 perf_evlist__for_each_entry(evlist, evsel)
237 perf_evsel__disable(evsel);
250 struct perf_evsel *evsel,
254 struct perf_sample_id *sid = SID(evsel, cpu_map_idx, thread);
257 sid->evsel = evsel;
271 struct perf_evsel *evsel,
274 if (!SID(evsel, cpu_map_idx, thread))
277 perf_evlist__id_hash(evlist, evsel, cpu_map_idx, thread, id);
278 evsel->id[evsel->ids++] = id;
282 struct perf_evsel *evsel,
290 if (!SID(evsel, cpu_map_idx, thread))
309 if (!(evsel->attr.read_format & PERF_FORMAT_ID) ||
313 if (evsel->attr.read_format & PERF_FORMAT_TOTAL_TIME_ENABLED)
315 if (evsel->attr.read_format & PERF_FORMAT_TOTAL_TIME_RUNNING)
321 perf_evlist__id_add(evlist, evsel, cpu_map_idx, thread, id);
330 struct perf_evsel *evsel;
332 perf_evlist__for_each_entry(evlist, evsel) {
333 if (evsel->system_wide)
406 static void perf_evsel__set_sid_idx(struct perf_evsel *evsel, int idx, int cpu, int thread)
408 struct perf_sample_id *sid = SID(evsel, cpu, thread);
411 sid->cpu = perf_cpu_map__cpu(evsel->cpus, cpu);
412 sid->tid = perf_thread_map__pid(evsel->threads, thread);
460 struct perf_evsel *evsel;
463 perf_evlist__for_each_entry(evlist, evsel) {
464 bool overwrite = evsel->attr.write_backward;
469 if (evsel->system_wide && thread)
472 cpu = perf_cpu_map__idx(evsel->cpus, evlist_cpu);
488 fd = FD(evsel, cpu, thread);
509 ops->idx(evlist, evsel, mp, idx);
531 flgs = evsel->system_wide ? fdarray_flag__nonfilterable : fdarray_flag__default;
537 if (evsel->attr.read_format & PERF_FORMAT_ID) {
538 if (perf_evlist__id_add_fd(evlist, evsel, cpu, thread,
541 perf_evsel__set_sid_idx(evsel, idx, cpu, thread);
643 struct perf_evsel *evsel;
652 perf_evlist__for_each_entry(evlist, evsel) {
653 if ((evsel->attr.read_format & PERF_FORMAT_ID) &&
654 evsel->sample_id == NULL &&
655 perf_evsel__alloc_id(evsel, evsel->fd->max_x, evsel->fd->max_y) < 0)
711 struct perf_evsel *evsel;
714 __perf_evlist__for_each_entry(list, evsel) {
715 evsel->leader = leader;
733 struct perf_evsel *evsel;
736 perf_evlist__for_each_evsel(evlist, evsel) {
742 if (evsel->leader == evsel && evsel->nr_members > 1)
748 void perf_evlist__go_system_wide(struct perf_evlist *evlist, struct perf_evsel *evsel)
750 if (!evsel->system_wide) {
751 evsel->system_wide = true;
753 __perf_evlist__propagate_maps(evlist, evsel);