diff options
author | Masami Hiramatsu <mhiramat@redhat.com> | 2009-12-15 10:32:10 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-12-15 14:22:03 -0500 |
commit | bbbb521bc61008b280c72ad6e29a8a7558d3acfa (patch) | |
tree | c4abf43779dd0380cb514b52b0ce0047c5f1cf8e /tools/perf/util/string.c | |
parent | adf365f486280e4577c9eabd7d8e118e5994a03e (diff) |
perf probe: Add glob matching support on --del
Add glob-expression matching support on --del option.
You can use wildcards for specifying deleting events.
e.g.
Clear all probe events:
# perf probe --del '*'
Clear probes on schedule():
# perf probe --del 'schedule*'
Signed-off-by: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Jim Keniston <jkenisto@us.ibm.com>
Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
Cc: Christoph Hellwig <hch@infradead.org>
Cc: Frank Ch. Eigler <fche@redhat.com>
Cc: Jason Baron <jbaron@redhat.com>
Cc: K.Prasad <prasad@linux.vnet.ibm.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Cc: systemtap <systemtap@sources.redhat.com>
Cc: DLE <dle-develop@lists.sourceforge.net>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <20091215153210.17436.12327.stgit@dhcp-100-2-132.bos.redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools/perf/util/string.c')
-rw-r--r-- | tools/perf/util/string.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/tools/perf/util/string.c b/tools/perf/util/string.c index f24a8cc933d5..5352d7dccc61 100644 --- a/tools/perf/util/string.c +++ b/tools/perf/util/string.c | |||
@@ -226,3 +226,28 @@ fail: | |||
226 | argv_free(argv); | 226 | argv_free(argv); |
227 | return NULL; | 227 | return NULL; |
228 | } | 228 | } |
229 | |||
230 | /* Glob expression pattern matching */ | ||
231 | bool strglobmatch(const char *str, const char *pat) | ||
232 | { | ||
233 | while (*str && *pat && *pat != '*') { | ||
234 | if (*pat == '?') { | ||
235 | str++; | ||
236 | pat++; | ||
237 | } else | ||
238 | if (*str++ != *pat++) | ||
239 | return false; | ||
240 | } | ||
241 | /* Check wild card */ | ||
242 | if (*pat == '*') { | ||
243 | while (*pat == '*') | ||
244 | pat++; | ||
245 | if (!*pat) /* Tail wild card matches all */ | ||
246 | return true; | ||
247 | while (*str) | ||
248 | if (strglobmatch(str++, pat)) | ||
249 | return true; | ||
250 | } | ||
251 | return !*str && !*pat; | ||
252 | } | ||
253 | |||