Re: [PATCH 09/10] perf, tools: Support MetricExpr header in JSON event list

From: Jiri Olsa
Date: Wed Feb 08 2017 - 06:31:48 EST


On Fri, Jan 27, 2017 at 06:03:44PM -0800, Andi Kleen wrote:

SNIP

> diff --git a/tools/perf/util/pmu.c b/tools/perf/util/pmu.c
> index 82a654dec666..b78b348068d7 100644
> --- a/tools/perf/util/pmu.c
> +++ b/tools/perf/util/pmu.c
> @@ -231,7 +231,8 @@ static int perf_pmu__parse_snapshot(struct perf_pmu_alias *alias,
> static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
> char *desc, char *val,
> char *long_desc, char *topic,
> - char *unit, char *perpkg)
> + char *unit, char *perpkg,
> + char *dividedby)
> {
> struct perf_pmu_alias *alias;
> int ret;
> @@ -265,6 +266,7 @@ static int __perf_pmu__new_alias(struct list_head *list, char *dir, char *name,
> perf_pmu__parse_snapshot(alias, dir, name);
> }
>
> + alias->dividedby = dividedby ? strdup(dividedby) : NULL;

s/dividedby/metric_expr/ ?

CC util/pmu.o
util/pmu.c: In function âpmu_add_cpu_aliasesâ:
util/pmu.c:570:15: error: âstruct pmu_eventâ has no member named âdividedbyâ
(char *)pe->dividedby);


> alias->desc = desc ? strdup(desc) : NULL;
> alias->long_desc = long_desc ? strdup(long_desc) :
> desc ? strdup(desc) : NULL;
> @@ -294,7 +296,7 @@ static int perf_pmu__new_alias(struct list_head *list, char *dir, char *name, FI
> buf[ret] = 0;
>
> return __perf_pmu__new_alias(list, dir, name, NULL, buf, NULL, NULL, NULL,
> - NULL);
> + NULL, NULL);
> }
>
> static inline bool pmu_alias_info_file(char *name)
> @@ -564,7 +566,8 @@ static void pmu_add_cpu_aliases(struct list_head *head, const char *name)
> __perf_pmu__new_alias(head, NULL, (char *)pe->name,
> (char *)pe->desc, (char *)pe->event,
> (char *)pe->long_desc, (char *)pe->topic,
> - (char *)pe->unit, (char *)pe->perpkg);
> + (char *)pe->unit, (char *)pe->perpkg,
> + (char *)pe->dividedby);

ditto

> }
>
> out:
> diff --git a/tools/perf/util/pmu.h b/tools/perf/util/pmu.h
> index 00852ddc7741..faf8a7f97d03 100644
> --- a/tools/perf/util/pmu.h
> +++ b/tools/perf/util/pmu.h
> @@ -50,6 +50,7 @@ struct perf_pmu_alias {
> double scale;
> bool per_pkg;
> bool snapshot;
> + char *dividedby;

ditto

> };
>
> struct perf_pmu *perf_pmu__find(const char *name);
> --
> 2.9.3
>