6 struct perf_evlist
*perf_evlist__new(void)
8 struct perf_evlist
*evlist
= zalloc(sizeof(*evlist
));
11 INIT_LIST_HEAD(&evlist
->entries
);
17 static void perf_evlist__purge(struct perf_evlist
*evlist
)
19 struct perf_evsel
*pos
, *n
;
21 list_for_each_entry_safe(pos
, n
, &evlist
->entries
, node
) {
22 list_del_init(&pos
->node
);
23 perf_evsel__delete(pos
);
26 evlist
->nr_entries
= 0;
29 void perf_evlist__delete(struct perf_evlist
*evlist
)
31 perf_evlist__purge(evlist
);
36 void perf_evlist__add(struct perf_evlist
*evlist
, struct perf_evsel
*entry
)
38 list_add_tail(&entry
->node
, &evlist
->entries
);
42 int perf_evlist__add_default(struct perf_evlist
*evlist
)
44 struct perf_event_attr attr
= {
45 .type
= PERF_TYPE_HARDWARE
,
46 .config
= PERF_COUNT_HW_CPU_CYCLES
,
48 struct perf_evsel
*evsel
= perf_evsel__new(&attr
, 0);
53 perf_evlist__add(evlist
, evsel
);
57 int perf_evlist__alloc_pollfd(struct perf_evlist
*evlist
, int ncpus
, int nthreads
)
59 int nfds
= ncpus
* nthreads
* evlist
->nr_entries
;
60 evlist
->pollfd
= malloc(sizeof(struct pollfd
) * nfds
);
61 return evlist
->pollfd
!= NULL
? 0 : -ENOMEM
;