diff options
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/evlist.c | 28 | ||||
-rw-r--r-- | tools/perf/util/evlist.h | 3 |
2 files changed, 31 insertions, 0 deletions
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c index b9eac0daa0b9..fa6dbf0ea0d6 100644 --- a/tools/perf/util/evlist.c +++ b/tools/perf/util/evlist.c | |||
@@ -68,6 +68,18 @@ struct perf_evlist *perf_evlist__new_default(void) | |||
68 | return evlist; | 68 | return evlist; |
69 | } | 69 | } |
70 | 70 | ||
71 | struct perf_evlist *perf_evlist__new_dummy(void) | ||
72 | { | ||
73 | struct perf_evlist *evlist = perf_evlist__new(); | ||
74 | |||
75 | if (evlist && perf_evlist__add_dummy(evlist)) { | ||
76 | perf_evlist__delete(evlist); | ||
77 | evlist = NULL; | ||
78 | } | ||
79 | |||
80 | return evlist; | ||
81 | } | ||
82 | |||
71 | /** | 83 | /** |
72 | * perf_evlist__set_id_pos - set the positions of event ids. | 84 | * perf_evlist__set_id_pos - set the positions of event ids. |
73 | * @evlist: selected event list | 85 | * @evlist: selected event list |
@@ -248,6 +260,22 @@ error: | |||
248 | return -ENOMEM; | 260 | return -ENOMEM; |
249 | } | 261 | } |
250 | 262 | ||
263 | int perf_evlist__add_dummy(struct perf_evlist *evlist) | ||
264 | { | ||
265 | struct perf_event_attr attr = { | ||
266 | .type = PERF_TYPE_SOFTWARE, | ||
267 | .config = PERF_COUNT_SW_DUMMY, | ||
268 | .size = sizeof(attr), /* to capture ABI version */ | ||
269 | }; | ||
270 | struct perf_evsel *evsel = perf_evsel__new(&attr); | ||
271 | |||
272 | if (evsel == NULL) | ||
273 | return -ENOMEM; | ||
274 | |||
275 | perf_evlist__add(evlist, evsel); | ||
276 | return 0; | ||
277 | } | ||
278 | |||
251 | static int perf_evlist__add_attrs(struct perf_evlist *evlist, | 279 | static int perf_evlist__add_attrs(struct perf_evlist *evlist, |
252 | struct perf_event_attr *attrs, size_t nr_attrs) | 280 | struct perf_event_attr *attrs, size_t nr_attrs) |
253 | { | 281 | { |
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h index 139a50038097..3b7e1e2f1a86 100644 --- a/tools/perf/util/evlist.h +++ b/tools/perf/util/evlist.h | |||
@@ -67,6 +67,7 @@ struct perf_evsel_str_handler { | |||
67 | 67 | ||
68 | struct perf_evlist *perf_evlist__new(void); | 68 | struct perf_evlist *perf_evlist__new(void); |
69 | struct perf_evlist *perf_evlist__new_default(void); | 69 | struct perf_evlist *perf_evlist__new_default(void); |
70 | struct perf_evlist *perf_evlist__new_dummy(void); | ||
70 | void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus, | 71 | void perf_evlist__init(struct perf_evlist *evlist, struct cpu_map *cpus, |
71 | struct thread_map *threads); | 72 | struct thread_map *threads); |
72 | void perf_evlist__exit(struct perf_evlist *evlist); | 73 | void perf_evlist__exit(struct perf_evlist *evlist); |
@@ -81,6 +82,8 @@ int __perf_evlist__add_default_attrs(struct perf_evlist *evlist, | |||
81 | #define perf_evlist__add_default_attrs(evlist, array) \ | 82 | #define perf_evlist__add_default_attrs(evlist, array) \ |
82 | __perf_evlist__add_default_attrs(evlist, array, ARRAY_SIZE(array)) | 83 | __perf_evlist__add_default_attrs(evlist, array, ARRAY_SIZE(array)) |
83 | 84 | ||
85 | int perf_evlist__add_dummy(struct perf_evlist *evlist); | ||
86 | |||
84 | int perf_evlist__add_newtp(struct perf_evlist *evlist, | 87 | int perf_evlist__add_newtp(struct perf_evlist *evlist, |
85 | const char *sys, const char *name, void *handler); | 88 | const char *sys, const char *name, void *handler); |
86 | 89 | ||