Commit e7895e42 authored by Namhyung Kim's avatar Namhyung Kim Committed by Arnaldo Carvalho de Melo

perf probe: Split del_perf_probe_events()

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.
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
Acked-by: default avatarMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Wang Nan <wangnan0@huawei.com>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1441368963-11565-4-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent b02137cc
...@@ -275,7 +275,8 @@ static int __del_trace_probe_event(int fd, struct str_node *ent) ...@@ -275,7 +275,8 @@ static int __del_trace_probe_event(int fd, struct str_node *ent)
return ret; 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 strlist *namelist;
struct str_node *ent; struct str_node *ent;
...@@ -290,11 +291,42 @@ int probe_file__del_events(int fd, struct strfilter *filter) ...@@ -290,11 +291,42 @@ int probe_file__del_events(int fd, struct strfilter *filter)
p = strchr(ent->s, ':'); p = strchr(ent->s, ':');
if ((p && strfilter__compare(filter, p + 1)) || if ((p && strfilter__compare(filter, p + 1)) ||
strfilter__compare(filter, ent->s)) { strfilter__compare(filter, ent->s)) {
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); ret = __del_trace_probe_event(fd, ent);
if (ret < 0) if (ret < 0)
break; 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); strlist__delete(namelist);
return ret; return ret;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment