On Tue, Jun 02, 2015 at 10:12:03AM -0700, Sukadev Bhattiprolu wrote: SNIP
> + > +/* > + * From the pmu_events_map, find the table of PMU events that corresponds > + * to the current running CPU. Then, add all PMU events from that table > + * as aliases. > + */ > +static int pmu_add_cpu_aliases(void *data) any reason why the argument is not 'head' directly? jirka > +{ > + struct list_head *head = (struct list_head *)data; > + int i; > + struct pmu_events_map *map; > + struct pmu_event *pe; > + char *cpuid; > + > + cpuid = get_cpuid_str(); > + if (!cpuid) > + return 0; > + > + i = 0; > + while (1) { > + map = &pmu_events_map[i++]; > + if (!map->table) { > + goto out; > + } > + > + if (!strcmp(map->cpuid, cpuid)) > + break; > + } > + > + /* > + * Found a matching PMU events table. Create aliases > + */ > + i = 0; > + while (1) { > + pe = &map->table[i++]; > + if (!pe->name) > + break; > + > + /* need type casts to override 'const' */ > + __perf_pmu__new_alias(head, (char *)pe->name, NULL, > + (char *)pe->desc, (char *)pe->event); > + } > + > +out: > + free(cpuid); > + return 0; > +} > + > + > static struct perf_pmu *pmu_lookup(const char *name) > { > struct perf_pmu *pmu; > @@ -464,6 +540,8 @@ static struct perf_pmu *pmu_lookup(const char *name) > if (pmu_aliases(name, &aliases)) > return NULL; > > + if (!strcmp(name, "cpu")) > + (void)pmu_add_cpu_aliases(&aliases); > if (pmu_type(name, &type)) > return NULL; > > -- > 1.7.9.5 > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev