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

From: Masami Hiramatsu
Date: Thu Jul 22 2021 - 21:11:51 EST


On Thu, 22 Jul 2021 12:32:34 -0400
Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:

> 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 understand. As far as I can see the code, it looks a bit complicated.
To simplify it, I need to understand the spec for "hist_field"
for keys and for vars. And maybe need to split both case.

> 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 :-)

Me neither at least this moment, need more investigation. Let me try.

Thank you,

--
Masami Hiramatsu <mhiramat@xxxxxxxxxx>