Messages in this thread Patch in this message | | | From | 平松雅巳 / HIRAMATU,MASAMI <> | Subject | RE: [PATCH 4/5] perf probe: Split del_perf_probe_events() | Date | Fri, 4 Sep 2015 11:52:33 +0000 |
| |
> From: Namhyung Kim [mailto:namhyung@kernel.org] > > 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.
Acked-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Thanks,
> Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> > Signed-off-by: Namhyung Kim <namhyung@kernel.org> > --- > 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
| |