> > +bool metricgroup__has_metric(const char *metric) > > +{ > > + struct pmu_events_map *map = perf_pmu__find_map(NULL); > > + struct pmu_event *pe; > > + int i; > > + > > + if (!map) > > + return false; > > + > > + for (i = 0; ; i++) { > > + pe = &map->table[i]; > > + > > + if (!pe->name && !pe->metric_group && !pe->metric_name) > > + break; > > + if (!pe->metric_expr) > > + continue; > > + if (match_metric(pe->metric_group, metric) || > > + match_metric(pe->metric_name, metric))
Why both the group and the metric? I would just match the metric_name Otherwise it's impossible to have a group called "transaction" With that fixed it's ok for me. Acked-by: Andi Kleen <a...@linux.intel.com> -Andi