diff options
author | Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com> | 2014-10-27 16:31:31 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2014-10-29 08:32:49 -0400 |
commit | 5e17b28f1e246b98e08cb463f7d72cff6415fc53 (patch) | |
tree | 56ab831fd090f3f3a484b796ae38a0044fa73a43 /tools/perf | |
parent | 2987e32f75dcb40bce0f3ab1d5d48cc1c580fd8b (diff) |
perf probe: Add --quiet option to suppress output result message
Add --quiet(-q) option to suppress output result message for --add, and
--del options (Note that --lines/funcs/vars are not affected). This
option is useful if you run the perf probe inside your scripts.
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Hemant Kumar <hemant@linux.vnet.ibm.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
Link: http://lkml.kernel.org/r/20141027203131.21219.35170.stgit@localhost.localdomain
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r-- | tools/perf/builtin-probe.c | 11 | ||||
-rw-r--r-- | tools/perf/util/probe-event.c | 18 |
2 files changed, 20 insertions, 9 deletions
diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c index 2d3577d1009d..921bb6942503 100644 --- a/tools/perf/builtin-probe.c +++ b/tools/perf/builtin-probe.c | |||
@@ -55,6 +55,7 @@ static struct { | |||
55 | bool show_funcs; | 55 | bool show_funcs; |
56 | bool mod_events; | 56 | bool mod_events; |
57 | bool uprobes; | 57 | bool uprobes; |
58 | bool quiet; | ||
58 | int nevents; | 59 | int nevents; |
59 | struct perf_probe_event events[MAX_PROBES]; | 60 | struct perf_probe_event events[MAX_PROBES]; |
60 | struct strlist *dellist; | 61 | struct strlist *dellist; |
@@ -315,6 +316,8 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused) | |||
315 | struct option options[] = { | 316 | struct option options[] = { |
316 | OPT_INCR('v', "verbose", &verbose, | 317 | OPT_INCR('v', "verbose", &verbose, |
317 | "be more verbose (show parsed arguments, etc)"), | 318 | "be more verbose (show parsed arguments, etc)"), |
319 | OPT_BOOLEAN('q', "quiet", ¶ms.quiet, | ||
320 | "be quiet (do not show any mesages)"), | ||
318 | OPT_BOOLEAN('l', "list", ¶ms.list_events, | 321 | OPT_BOOLEAN('l', "list", ¶ms.list_events, |
319 | "list up current probe events"), | 322 | "list up current probe events"), |
320 | OPT_CALLBACK('d', "del", NULL, "[GROUP:]EVENT", "delete a probe event.", | 323 | OPT_CALLBACK('d', "del", NULL, "[GROUP:]EVENT", "delete a probe event.", |
@@ -404,6 +407,14 @@ __cmd_probe(int argc, const char **argv, const char *prefix __maybe_unused) | |||
404 | } | 407 | } |
405 | } | 408 | } |
406 | 409 | ||
410 | if (params.quiet) { | ||
411 | if (verbose != 0) { | ||
412 | pr_err(" Error: -v and -q are exclusive.\n"); | ||
413 | return -EINVAL; | ||
414 | } | ||
415 | verbose = -1; | ||
416 | } | ||
417 | |||
407 | if (params.max_probe_points == 0) | 418 | if (params.max_probe_points == 0) |
408 | params.max_probe_points = MAX_PROBES; | 419 | params.max_probe_points = MAX_PROBES; |
409 | 420 | ||
diff --git a/tools/perf/util/probe-event.c b/tools/perf/util/probe-event.c index c150ca4343eb..28eb1417cb2a 100644 --- a/tools/perf/util/probe-event.c +++ b/tools/perf/util/probe-event.c | |||
@@ -1910,21 +1910,21 @@ static int show_perf_probe_event(struct perf_probe_event *pev, | |||
1910 | if (ret < 0) | 1910 | if (ret < 0) |
1911 | return ret; | 1911 | return ret; |
1912 | 1912 | ||
1913 | printf(" %-20s (on %s", buf, place); | 1913 | pr_info(" %-20s (on %s", buf, place); |
1914 | if (module) | 1914 | if (module) |
1915 | printf(" in %s", module); | 1915 | pr_info(" in %s", module); |
1916 | 1916 | ||
1917 | if (pev->nargs > 0) { | 1917 | if (pev->nargs > 0) { |
1918 | printf(" with"); | 1918 | pr_info(" with"); |
1919 | for (i = 0; i < pev->nargs; i++) { | 1919 | for (i = 0; i < pev->nargs; i++) { |
1920 | ret = synthesize_perf_probe_arg(&pev->args[i], | 1920 | ret = synthesize_perf_probe_arg(&pev->args[i], |
1921 | buf, 128); | 1921 | buf, 128); |
1922 | if (ret < 0) | 1922 | if (ret < 0) |
1923 | break; | 1923 | break; |
1924 | printf(" %s", buf); | 1924 | pr_info(" %s", buf); |
1925 | } | 1925 | } |
1926 | } | 1926 | } |
1927 | printf(")\n"); | 1927 | pr_info(")\n"); |
1928 | free(place); | 1928 | free(place); |
1929 | return ret; | 1929 | return ret; |
1930 | } | 1930 | } |
@@ -2124,7 +2124,7 @@ static int __add_probe_trace_events(struct perf_probe_event *pev, | |||
2124 | } | 2124 | } |
2125 | 2125 | ||
2126 | ret = 0; | 2126 | ret = 0; |
2127 | printf("Added new event%s\n", (ntevs > 1) ? "s:" : ":"); | 2127 | pr_info("Added new event%s\n", (ntevs > 1) ? "s:" : ":"); |
2128 | for (i = 0; i < ntevs; i++) { | 2128 | for (i = 0; i < ntevs; i++) { |
2129 | tev = &tevs[i]; | 2129 | tev = &tevs[i]; |
2130 | if (pev->event) | 2130 | if (pev->event) |
@@ -2179,8 +2179,8 @@ static int __add_probe_trace_events(struct perf_probe_event *pev, | |||
2179 | 2179 | ||
2180 | if (ret >= 0) { | 2180 | if (ret >= 0) { |
2181 | /* Show how to use the event. */ | 2181 | /* Show how to use the event. */ |
2182 | printf("\nYou can now use it in all perf tools, such as:\n\n"); | 2182 | pr_info("\nYou can now use it in all perf tools, such as:\n\n"); |
2183 | printf("\tperf record -e %s:%s -aR sleep 1\n\n", tev->group, | 2183 | pr_info("\tperf record -e %s:%s -aR sleep 1\n\n", tev->group, |
2184 | tev->event); | 2184 | tev->event); |
2185 | } | 2185 | } |
2186 | 2186 | ||
@@ -2444,7 +2444,7 @@ static int __del_trace_probe_event(int fd, struct str_node *ent) | |||
2444 | goto error; | 2444 | goto error; |
2445 | } | 2445 | } |
2446 | 2446 | ||
2447 | printf("Removed event: %s\n", ent->s); | 2447 | pr_info("Removed event: %s\n", ent->s); |
2448 | return 0; | 2448 | return 0; |
2449 | error: | 2449 | error: |
2450 | pr_warning("Failed to delete event: %s\n", | 2450 | pr_warning("Failed to delete event: %s\n", |