Re: [PATCH v2 2/2] tracing: Allow execnames to be passed as args for synthetic events

From: Steven Rostedt
Date: Thu Jul 22 2021 - 12:32:47 EST


On Fri, 23 Jul 2021 01:19:35 +0900
Masami Hiramatsu <mhiramat@xxxxxxxxxx> wrote:

> > +/* Convert a var that points to common_pid.execname to a string */
> > +static void update_var_execname(struct hist_field *hist_field)
> > +{
> > + hist_field->flags = HIST_FIELD_FL_STRING | HIST_FIELD_FL_VAR |
> > + HIST_FIELD_FL_EXECNAME;
> > + hist_field->size = MAX_FILTER_STR_VAL;
> > + hist_field->is_signed = 0;
> > +
> > + kfree_const(hist_field->type);
> > + hist_field->type = "char[]";
> > +
> > + hist_field->fn = hist_field_execname;
> > +}
>
> Hmm, this is a bit ad-hoc.
>
> Can't this be done in the create_hist_field()? If you check 'var_name' and
> flags & HIST_FIELD_FL_EXECNAME, you can do the same thing I think.

Hi Masami,

I originally tried that, but then found that it converted the pid over
to it as well. So this must be done only for vars, and not only that, it
needs to be done in a single place, because I was spending hours
debugging it.

I found this to be the least intrusive solution.

Maybe Tom has a better idea, but I don't have any more time to work on
it, and I really want this feature for the next merge window.

If you can make it work, and have time to play with it, I'm happy to
take an alternative :-)

-- Steve