Commit-ID:  96b55e39237b8bc92d8e6b96f896c106f2d39cf6
Gitweb:     http://git.kernel.org/tip/96b55e39237b8bc92d8e6b96f896c106f2d39cf6
Author:     Masami Hiramatsu <[email protected]>
AuthorDate: Fri, 24 Apr 2015 18:47:48 +0900
Committer:  Arnaldo Carvalho de Melo <[email protected]>
CommitDate: Mon, 4 May 2015 12:43:55 -0300

perf probe: Accept multiple filter options

Accept multiple filter options. Each filters are combined by logical-or.
E.g. --filter abc* --filter *def is same as --filter abc*|*def

Signed-off-by: Masami Hiramatsu <[email protected]>
Cc: David Ahern <[email protected]>
Cc: Jiri Olsa <[email protected]>
Cc: Namhyung Kim <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Link: 
http://lkml.kernel.org/r/[email protected]
Signed-off-by: Arnaldo Carvalho de Melo <[email protected]>
---
 tools/perf/builtin-probe.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
index 92dcce0..be17075 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -262,21 +262,25 @@ static int opt_set_filter(const struct option *opt 
__maybe_unused,
                          const char *str, int unset __maybe_unused)
 {
        const char *err;
+       int ret = 0;
 
        if (str) {
                pr_debug2("Set filter: %s\n", str);
-               if (params.filter)
-                       strfilter__delete(params.filter);
-               params.filter = strfilter__new(str, &err);
                if (!params.filter) {
+                       params.filter = strfilter__new(str, &err);
+                       if (!params.filter)
+                               ret = err ? -EINVAL : -ENOMEM;
+               } else
+                       ret = strfilter__or(params.filter, str, &err);
+
+               if (ret == -EINVAL) {
                        pr_err("Filter parse error at %td.\n", err - str + 1);
                        pr_err("Source: \"%s\"\n", str);
                        pr_err("         %*c\n", (int)(err - str + 1), '^');
-                       return -EINVAL;
                }
        }
 
-       return 0;
+       return ret;
 }
 
 static int init_params(void)
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to