Re: [PATCH v6 2/5] perf/jevents: Add new structure to pass json fields.

From: Jiri Olsa
Date: Mon Aug 31 2020 - 04:44:12 EST


On Thu, Aug 27, 2020 at 06:39:55PM +0530, Kajol Jain wrote:

SNIP

> - if (!*field) \
> +#define TRY_FIXUP_FIELD(field) do { if (es->field && !je->field) {\
> + je->field = strdup(es->field); \
> + if (!je->field) \
> return -ENOMEM; \
> } } while (0)
>
> @@ -428,11 +440,7 @@ static void free_arch_std_events(void)
> }
> }
>
> -static int save_arch_std_events(void *data, char *name, char *event,
> - char *desc, char *long_desc, char *pmu,
> - char *unit, char *perpkg, char *metric_expr,
> - char *metric_name, char *metric_group,
> - char *deprecated, char *metric_constraint)
> +static int save_arch_std_events(void *data, struct json_event *je)
> {
> struct event_struct *es;
>
> @@ -486,17 +494,16 @@ static char *real_event(const char *name, char *event)
> return NULL;
>
> for (i = 0; fixed[i].name; i++)
> - if (!strcasecmp(name, fixed[i].name))
> - return (char *)fixed[i].event;
> + if (!strcasecmp(name, fixed[i].name)) {
> + strcpy(event, fixed[i].event);

hum what's this strcpy for in here? we're just replacing separated
variables with struct members, why do you need to copy the event in
here?

thanks,
jirka