diff options
author | Jiri Olsa <jolsa@kernel.org> | 2015-04-22 15:10:19 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-04-29 09:38:00 -0400 |
commit | 36adec85a86f2daa521cda48ea7be8a95c20ed10 (patch) | |
tree | 951b6d123db8e0faed5d7153952af900819097aa | |
parent | c056ba6a174f4d5d79fe27f259fc133041a451da (diff) |
perf tools: Change parse_events_add_pmu interface
Changing parse_events_add_pmu interface to allow propagating of the
parse_events_error info.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Link: http://lkml.kernel.org/r/1429729824-13932-5-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r-- | tools/perf/util/parse-events.c | 11 | ||||
-rw-r--r-- | tools/perf/util/parse-events.h | 5 | ||||
-rw-r--r-- | tools/perf/util/parse-events.y | 6 |
3 files changed, 12 insertions, 10 deletions
diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index 1e42f2ceec3d..749af0db94e7 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c | |||
@@ -633,8 +633,9 @@ static char *pmu_event_name(struct list_head *head_terms) | |||
633 | return NULL; | 633 | return NULL; |
634 | } | 634 | } |
635 | 635 | ||
636 | int parse_events_add_pmu(struct list_head *list, int *idx, | 636 | int parse_events_add_pmu(struct parse_events_evlist *data, |
637 | char *name, struct list_head *head_config) | 637 | struct list_head *list, char *name, |
638 | struct list_head *head_config) | ||
638 | { | 639 | { |
639 | struct perf_event_attr attr; | 640 | struct perf_event_attr attr; |
640 | struct perf_pmu_info info; | 641 | struct perf_pmu_info info; |
@@ -654,7 +655,7 @@ int parse_events_add_pmu(struct list_head *list, int *idx, | |||
654 | 655 | ||
655 | if (!head_config) { | 656 | if (!head_config) { |
656 | attr.type = pmu->type; | 657 | attr.type = pmu->type; |
657 | evsel = __add_event(list, idx, &attr, NULL, pmu->cpus); | 658 | evsel = __add_event(list, &data->idx, &attr, NULL, pmu->cpus); |
658 | return evsel ? 0 : -ENOMEM; | 659 | return evsel ? 0 : -ENOMEM; |
659 | } | 660 | } |
660 | 661 | ||
@@ -671,8 +672,8 @@ int parse_events_add_pmu(struct list_head *list, int *idx, | |||
671 | if (perf_pmu__config(pmu, &attr, head_config)) | 672 | if (perf_pmu__config(pmu, &attr, head_config)) |
672 | return -EINVAL; | 673 | return -EINVAL; |
673 | 674 | ||
674 | evsel = __add_event(list, idx, &attr, pmu_event_name(head_config), | 675 | evsel = __add_event(list, &data->idx, &attr, |
675 | pmu->cpus); | 676 | pmu_event_name(head_config), pmu->cpus); |
676 | if (evsel) { | 677 | if (evsel) { |
677 | evsel->unit = info.unit; | 678 | evsel->unit = info.unit; |
678 | evsel->scale = info.scale; | 679 | evsel->scale = info.scale; |
diff --git a/tools/perf/util/parse-events.h b/tools/perf/util/parse-events.h index eb12bcd12642..76ea3de288da 100644 --- a/tools/perf/util/parse-events.h +++ b/tools/perf/util/parse-events.h | |||
@@ -115,8 +115,9 @@ int parse_events_add_cache(struct list_head *list, int *idx, | |||
115 | char *type, char *op_result1, char *op_result2); | 115 | char *type, char *op_result1, char *op_result2); |
116 | int parse_events_add_breakpoint(struct list_head *list, int *idx, | 116 | int parse_events_add_breakpoint(struct list_head *list, int *idx, |
117 | void *ptr, char *type, u64 len); | 117 | void *ptr, char *type, u64 len); |
118 | int parse_events_add_pmu(struct list_head *list, int *idx, | 118 | int parse_events_add_pmu(struct parse_events_evlist *data, |
119 | char *pmu , struct list_head *head_config); | 119 | struct list_head *list, char *name, |
120 | struct list_head *head_config); | ||
120 | enum perf_pmu_event_symbol_type | 121 | enum perf_pmu_event_symbol_type |
121 | perf_pmu__parse_check(const char *name); | 122 | perf_pmu__parse_check(const char *name); |
122 | void parse_events__set_leader(char *name, struct list_head *list); | 123 | void parse_events__set_leader(char *name, struct list_head *list); |
diff --git a/tools/perf/util/parse-events.y b/tools/perf/util/parse-events.y index 14521ce534d9..84596617b355 100644 --- a/tools/perf/util/parse-events.y +++ b/tools/perf/util/parse-events.y | |||
@@ -207,7 +207,7 @@ PE_NAME '/' event_config '/' | |||
207 | struct list_head *list; | 207 | struct list_head *list; |
208 | 208 | ||
209 | ALLOC_LIST(list); | 209 | ALLOC_LIST(list); |
210 | ABORT_ON(parse_events_add_pmu(list, &data->idx, $1, $3)); | 210 | ABORT_ON(parse_events_add_pmu(data, list, $1, $3)); |
211 | parse_events__free_terms($3); | 211 | parse_events__free_terms($3); |
212 | $$ = list; | 212 | $$ = list; |
213 | } | 213 | } |
@@ -218,7 +218,7 @@ PE_NAME '/' '/' | |||
218 | struct list_head *list; | 218 | struct list_head *list; |
219 | 219 | ||
220 | ALLOC_LIST(list); | 220 | ALLOC_LIST(list); |
221 | ABORT_ON(parse_events_add_pmu(list, &data->idx, $1, NULL)); | 221 | ABORT_ON(parse_events_add_pmu(data, list, $1, NULL)); |
222 | $$ = list; | 222 | $$ = list; |
223 | } | 223 | } |
224 | | | 224 | | |
@@ -235,7 +235,7 @@ PE_KERNEL_PMU_EVENT sep_dc | |||
235 | list_add_tail(&term->list, head); | 235 | list_add_tail(&term->list, head); |
236 | 236 | ||
237 | ALLOC_LIST(list); | 237 | ALLOC_LIST(list); |
238 | ABORT_ON(parse_events_add_pmu(list, &data->idx, "cpu", head)); | 238 | ABORT_ON(parse_events_add_pmu(data, list, "cpu", head)); |
239 | parse_events__free_terms(head); | 239 | parse_events__free_terms(head); |
240 | $$ = list; | 240 | $$ = list; |
241 | } | 241 | } |