Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S934719AbbDXJuJ (ORCPT ); Fri, 24 Apr 2015 05:50:09 -0400 Received: from mail4.hitachi.co.jp ([133.145.228.5]:35281 "EHLO mail4.hitachi.co.jp" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S967006AbbDXJuE (ORCPT ); Fri, 24 Apr 2015 05:50:04 -0400 X-AuditID: 85900ec0-a00c6b9000003d4c-ac-553a11be9577 Subject: [PATCH perf/core v3 6/8] perf probe: Accept filter argument for --funcs From: Masami Hiramatsu To: Arnaldo Carvalho de Melo Cc: Peter Zijlstra , Linux Kernel Mailing List , David Ahern , namhyung@kernel.org, Jiri Olsa , Ingo Molnar Date: Fri, 24 Apr 2015 18:47:55 +0900 Message-ID: <20150424094755.23967.40890.stgit@localhost.localdomain> In-Reply-To: <20150424094741.23967.758.stgit@localhost.localdomain> References: <20150424094741.23967.758.stgit@localhost.localdomain> User-Agent: StGit/0.17.1-dirty MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: AAAAAA== Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2951 Lines: 85 This allows user to pass the filter pattern directly to --funcs option as below. ---- # ./perf probe -F *kmalloc __kmalloc devm_kmalloc mempool_kmalloc sg_kmalloc sock_kmalloc ---- We previously need --filter option for that. Signed-off-by: Masami Hiramatsu --- tools/perf/Documentation/perf-probe.txt | 3 ++- tools/perf/builtin-probe.c | 19 ++++++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/tools/perf/Documentation/perf-probe.txt b/tools/perf/Documentation/perf-probe.txt index d0feb8e..a272f2e 100644 --- a/tools/perf/Documentation/perf-probe.txt +++ b/tools/perf/Documentation/perf-probe.txt @@ -84,9 +84,10 @@ OPTIONS variables. -F:: ---funcs:: +--funcs[=FILTER]:: Show available functions in given module or kernel. With -x/--exec, can also list functions in a user space executable / shared library. + This also can accept a FILTER rule argument. --filter=FILTER:: (Only for --vars and --funcs) Set filter. FILTER is a combination of glob diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c index 1f41b4e..5a0e8f1 100644 --- a/tools/perf/builtin-probe.c +++ b/tools/perf/builtin-probe.c @@ -290,6 +290,17 @@ static int opt_show_vars(const struct option *opt __maybe_unused, return ret; } #endif +static int opt_show_funcs(const struct option *opt __maybe_unused, + const char *str, int unset) +{ + if (!unset) + params.show_funcs = true; + + if (str) + return params_add_filter(str); + + return 0; +} static int opt_set_filter(const struct option *opt __maybe_unused, const char *str, int unset __maybe_unused) @@ -399,8 +410,9 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused) OPT__DRY_RUN(&probe_event_dry_run), OPT_INTEGER('\0', "max-probes", ¶ms.max_probe_points, "Set how many probe points can be found for a probe."), - OPT_BOOLEAN('F', "funcs", ¶ms.show_funcs, - "Show potential probe-able functions."), + OPT_CALLBACK_DEFAULT('F', "funcs", NULL, "[FILTER]", + "Show potential probe-able functions.", + opt_show_funcs, DEFAULT_FUNC_FILTER), OPT_CALLBACK('\0', "filter", NULL, "[!]FILTER", "Set a filter (with --vars/funcs only)\n" "\t\t\t(default: \"" DEFAULT_VAR_FILTER "\" for --vars,\n" @@ -472,9 +484,6 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused) return ret; } if (params.show_funcs) { - if (!params.filter) - params.filter = strfilter__new(DEFAULT_FUNC_FILTER, - NULL); ret = show_available_funcs(params.target, params.filter, params.uprobes); strfilter__delete(params.filter); -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/