On Tue, Jan 03, 2017 at 07:08:26AM -0800, Andi Kleen wrote:
> From: Andi Kleen <[email protected]>
> 
> Add support for registering json aliases per PMU. Any alias
> with an unit matching the prefix is registered to the PMU.
> Uncore has multiple instances of most units, so all
> these aliases get registered for each individual PMU
> (this is important later to run the event on every instance
> of the PMU).
> 
> To avoid printing the events multiple times in perf list
> filter out duplicated events during printing.
> 
> v2: Rely on uncore_ prefix already in unit
> Signed-off-by: Andi Kleen <[email protected]>
> ---
>  tools/perf/util/pmu.c | 10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
> 
> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index 8bffe99d8e3f..4bfc98953aba 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -587,14 +587,13 @@ static struct perf_pmu *pmu_lookup(const char *name)
>       if (pmu_format(name, &format))
>               return NULL;
>  
> -     if (pmu_aliases(name, &aliases))
> +     if (pmu_type(name, &type))
>               return NULL;
>  
> -     pmu_add_cpu_aliases(&aliases, name);
> -
> -     if (pmu_type(name, &type))
> +     if (pmu_aliases(name, &aliases))
>               return NULL;
>  
> +     pmu_add_cpu_aliases(&aliases, name);

AFAICS you switched the calls.. how does it matter?

jirka

>       pmu = zalloc(sizeof(*pmu));
>       if (!pmu)
>               return NULL;
> @@ -1192,6 +1191,9 @@ void print_pmu_events(const char *event_glob, bool 
> name_only, bool quiet_flag,
>       len = j;
>       qsort(aliases, len, sizeof(struct sevent), cmp_sevent);
>       for (j = 0; j < len; j++) {
> +             /* Skip duplicates */
> +             if (j > 0 && !strcmp(aliases[j].name, aliases[j - 1].name))
> +                     continue;
>               if (name_only) {
>                       printf("%s ", aliases[j].name);
>                       continue;
> -- 
> 2.9.3
> 

Reply via email to