diff options
Diffstat (limited to 'tools/perf/util/parse-events.c')
| -rw-r--r-- | tools/perf/util/parse-events.c | 33 | 
1 files changed, 18 insertions, 15 deletions
| diff --git a/tools/perf/util/parse-events.c b/tools/perf/util/parse-events.c index d1965a7b97ed..4cd64ffa4fcd 100644 --- a/tools/perf/util/parse-events.c +++ b/tools/perf/util/parse-events.c @@ -490,7 +490,7 @@ int parse_events_add_cache(struct list_head *list, int *idx, const char *name,  	int ret = 0;  	struct evsel *first_wildcard_match = NULL; -	while ((pmu = perf_pmus__scan(pmu)) != NULL) { +	while ((pmu = perf_pmus__scan_for_event(pmu, name)) != NULL) {  		LIST_HEAD(config_terms);  		struct perf_event_attr attr; @@ -1681,7 +1681,8 @@ int parse_events_multi_pmu_add(struct parse_events_state *parse_state,  	INIT_LIST_HEAD(list); -	while ((pmu = perf_pmus__scan(pmu)) != NULL) { +	while ((pmu = perf_pmus__scan_for_event(pmu, event_name)) != NULL) { +  		if (parse_events__filter_pmu(parse_state, pmu))  			continue; @@ -1760,19 +1761,21 @@ int parse_events_multi_pmu_add_or_add_pmu(struct parse_events_state *parse_state  	pmu = NULL;  	/* Failed to add, try wildcard expansion of event_or_pmu as a PMU name. */ -	while ((pmu = perf_pmus__scan(pmu)) != NULL) { -		if (!parse_events__filter_pmu(parse_state, pmu) && -		    perf_pmu__wildcard_match(pmu, event_or_pmu)) { -			if (!parse_events_add_pmu(parse_state, *listp, pmu, -						  const_parsed_terms, -						  first_wildcard_match, -						  /*alternate_hw_config=*/PERF_COUNT_HW_MAX)) { -				ok++; -				parse_state->wild_card_pmus = true; -			} -			if (first_wildcard_match == NULL) -				first_wildcard_match = -					container_of((*listp)->prev, struct evsel, core.node); +	while ((pmu = perf_pmus__scan_matching_wildcard(pmu, event_or_pmu)) != NULL) { + +		if (parse_events__filter_pmu(parse_state, pmu)) +			continue; + +		if (!parse_events_add_pmu(parse_state, *listp, pmu, +					  const_parsed_terms, +					  first_wildcard_match, +					  /*alternate_hw_config=*/PERF_COUNT_HW_MAX)) { +			ok++; +			parse_state->wild_card_pmus = true; +		} +		if (first_wildcard_match == NULL) { +			first_wildcard_match = +				container_of((*listp)->prev, struct evsel, core.node);  		}  	}  	if (ok) | 
