| /* SPDX-License-Identifier: GPL-2.0 */ |
| #ifndef __LIBPERF_INTERNAL_EVLIST_H |
| #define __LIBPERF_INTERNAL_EVLIST_H |
| |
| #include <linux/list.h> |
| |
| struct perf_cpu_map; |
| struct perf_thread_map; |
| |
| struct perf_evlist { |
| struct list_head entries; |
| int nr_entries; |
| bool has_user_cpus; |
| struct perf_cpu_map *cpus; |
| struct perf_thread_map *threads; |
| }; |
| |
| /** |
| * __perf_evlist__for_each_entry - iterate thru all the evsels |
| * @list: list_head instance to iterate |
| * @evsel: struct perf_evsel iterator |
| */ |
| #define __perf_evlist__for_each_entry(list, evsel) \ |
| list_for_each_entry(evsel, list, node) |
| |
| /** |
| * evlist__for_each_entry - iterate thru all the evsels |
| * @evlist: perf_evlist instance to iterate |
| * @evsel: struct perf_evsel iterator |
| */ |
| #define perf_evlist__for_each_entry(evlist, evsel) \ |
| __perf_evlist__for_each_entry(&(evlist)->entries, evsel) |
| |
| /** |
| * __perf_evlist__for_each_entry_reverse - iterate thru all the evsels in reverse order |
| * @list: list_head instance to iterate |
| * @evsel: struct evsel iterator |
| */ |
| #define __perf_evlist__for_each_entry_reverse(list, evsel) \ |
| list_for_each_entry_reverse(evsel, list, node) |
| |
| /** |
| * perf_evlist__for_each_entry_reverse - iterate thru all the evsels in reverse order |
| * @evlist: evlist instance to iterate |
| * @evsel: struct evsel iterator |
| */ |
| #define perf_evlist__for_each_entry_reverse(evlist, evsel) \ |
| __perf_evlist__for_each_entry_reverse(&(evlist)->entries, evsel) |
| |
| #endif /* __LIBPERF_INTERNAL_EVLIST_H */ |