Re: [PATCH 4/5] perf probe: Split del_perf_probe_events()

From: Namhyung Kim
Date: Fri Sep 04 2015 - 08:18:03 EST


On Fri, Sep 04, 2015 at 11:52:33AM +0000, åæéå / HIRAMATUïMASAMI wrote:
> > From: Namhyung Kim [mailto:namhyung@xxxxxxxxxx]
> >
> > The del_perf_probe_events() does 2 things:
> >
> > 1. find existing events which match to filter
> > 2. delete such trace events from kernel
> >
> > But sometimes we need to do something with the trace events. So split
> > the funtion into two, so that it can access intermediate trace events
> > name using strlist if needed.
> >
>
> Ok, but I think it might be better merged to 5/5.

I'm fine with merging them. Arnaldo, I'll keep it separate now just
in case, but you can merge them if you want.

Thanks,
Namhyung


>
> Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@xxxxxxxxxxx>
>
> Thanks,
>
>
> > Cc: Masami Hiramatsu <masami.hiramatsu.pt@xxxxxxxxxxx>
> > Signed-off-by: Namhyung Kim <namhyung@xxxxxxxxxx>
> > ---
> > tools/perf/util/probe-file.c | 40 ++++++++++++++++++++++++++++++++++++----
> > 1 file changed, 36 insertions(+), 4 deletions(-)
> >
> > diff --git a/tools/perf/util/probe-file.c b/tools/perf/util/probe-file.c
> > index bbb243717ec8..f00b0df56dfe 100644
> > --- a/tools/perf/util/probe-file.c
> > +++ b/tools/perf/util/probe-file.c
> > @@ -275,7 +275,8 @@ static int __del_trace_probe_event(int fd, struct str_node *ent)
> > return ret;
> > }
> >
> > -int probe_file__del_events(int fd, struct strfilter *filter)
> > +static int probe_file__get_events(int fd, struct strfilter *filter,
> > + struct strlist *plist)
> > {
> > struct strlist *namelist;
> > struct str_node *ent;
> > @@ -290,12 +291,43 @@ int probe_file__del_events(int fd, struct strfilter *filter)
> > p = strchr(ent->s, ':');
> > if ((p && strfilter__compare(filter, p + 1)) ||
> > strfilter__compare(filter, ent->s)) {
> > - ret = __del_trace_probe_event(fd, ent);
> > - if (ret < 0)
> > - break;
> > + strlist__add(plist, ent->s);
> > + ret = 0;
> > }
> > }
> > strlist__delete(namelist);
> >
> > return ret;
> > }
> > +
> > +static int probe_file__del_strlist(int fd, struct strlist *namelist)
> > +{
> > + int ret = 0;
> > + struct str_node *ent;
> > +
> > + strlist__for_each(ent, namelist) {
> > + ret = __del_trace_probe_event(fd, ent);
> > + if (ret < 0)
> > + break;
> > + }
> > + return ret;
> > +}
> > +
> > +int probe_file__del_events(int fd, struct strfilter *filter)
> > +{
> > + struct strlist *namelist;
> > + int ret;
> > +
> > + namelist = strlist__new(NULL, NULL);
> > + if (!namelist)
> > + return -ENOMEM;
> > +
> > + ret = probe_file__get_events(fd, filter, namelist);
> > + if (ret < 0)
> > + return ret;
> > +
> > + ret = probe_file__del_strlist(fd, namelist);
> > + strlist__delete(namelist);
> > +
> > + return ret;
> > +}
> > --
> > 2.5.0
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/