aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@kernel.org>2015-04-22 15:10:19 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-04-29 09:38:00 -0400
commit36adec85a86f2daa521cda48ea7be8a95c20ed10 (patch)
tree951b6d123db8e0faed5d7153952af900819097aa
parentc056ba6a174f4d5d79fe27f259fc133041a451da (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.c11
-rw-r--r--tools/perf/util/parse-events.h5
-rw-r--r--tools/perf/util/parse-events.y6
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
636int parse_events_add_pmu(struct list_head *list, int *idx, 636int 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);
116int parse_events_add_breakpoint(struct list_head *list, int *idx, 116int parse_events_add_breakpoint(struct list_head *list, int *idx,
117 void *ptr, char *type, u64 len); 117 void *ptr, char *type, u64 len);
118int parse_events_add_pmu(struct list_head *list, int *idx, 118int 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);
120enum perf_pmu_event_symbol_type 121enum perf_pmu_event_symbol_type
121perf_pmu__parse_check(const char *name); 122perf_pmu__parse_check(const char *name);
122void parse_events__set_leader(char *name, struct list_head *list); 123void 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}