aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndi Kleen <ak@linux.intel.com>2019-03-11 10:45:00 -0400
committerArnaldo Carvalho de Melo <acme@redhat.com>2019-03-11 15:33:20 -0400
commite3b74de50a5f8bbfacbd772874c8b5d9220ebcdb (patch)
treecd5f1e2ee98842651dce0d25169e3a1ead031ae1
parent59c24980dffbea2106fe65e64ea77834d657ee9c (diff)
perf tools report: Add custom scripts to script menu
Add a way to define custom scripts through ~/.perfconfig, which are then added to the scripts menu. The scripts get the same arguments as 'perf script', in particular -i, --cpu, --tid. Signed-off-by: Andi Kleen <ak@linux.intel.com> Acked-by: Jiri Olsa <jolsa@kernel.org> Link: http://lkml.kernel.org/r/20190311144502.15423-10-andi@firstfloor.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
-rw-r--r--tools/perf/Documentation/perf-config.txt8
-rw-r--r--tools/perf/ui/browsers/scripts.c20
2 files changed, 28 insertions, 0 deletions
diff --git a/tools/perf/Documentation/perf-config.txt b/tools/perf/Documentation/perf-config.txt
index 2d0fb7613134..95054a8176a2 100644
--- a/tools/perf/Documentation/perf-config.txt
+++ b/tools/perf/Documentation/perf-config.txt
@@ -590,6 +590,14 @@ samples.*::
590 Define how many ns worth of time to show 590 Define how many ns worth of time to show
591 around samples in perf report sample context browser. 591 around samples in perf report sample context browser.
592 592
593scripts.*::
594
595 Any option defines a script that is added to the scripts menu
596 in the interactive perf browser and whose output is displayed.
597 The name of the option is the name, the value is a script command line.
598 The script gets the same options passed as a full perf script,
599 in particular -i perfdata file, --cpu, --tid
600
593SEE ALSO 601SEE ALSO
594-------- 602--------
595linkperf:perf[1] 603linkperf:perf[1]
diff --git a/tools/perf/ui/browsers/scripts.c b/tools/perf/ui/browsers/scripts.c
index 96e5cd3b0eee..27cf3ab88d13 100644
--- a/tools/perf/ui/browsers/scripts.c
+++ b/tools/perf/ui/browsers/scripts.c
@@ -6,6 +6,7 @@
6#include "../../util/symbol.h" 6#include "../../util/symbol.h"
7#include "../browser.h" 7#include "../browser.h"
8#include "../libslang.h" 8#include "../libslang.h"
9#include "config.h"
9 10
10#define SCRIPT_NAMELEN 128 11#define SCRIPT_NAMELEN 128
11#define SCRIPT_MAX_NO 64 12#define SCRIPT_MAX_NO 64
@@ -53,6 +54,24 @@ static int add_script_option(const char *name, const char *opt,
53 return 0; 54 return 0;
54} 55}
55 56
57static int scripts_config(const char *var, const char *value, void *data)
58{
59 struct script_config *c = data;
60
61 if (!strstarts(var, "scripts."))
62 return -1;
63 if (c->index >= SCRIPT_MAX_NO)
64 return -1;
65 c->names[c->index] = strdup(var + 7);
66 if (!c->names[c->index])
67 return -1;
68 if (asprintf(&c->paths[c->index], "%s %s", value,
69 c->extra_format) < 0)
70 return -1;
71 c->index++;
72 return 0;
73}
74
56/* 75/*
57 * When success, will copy the full path of the selected script 76 * When success, will copy the full path of the selected script
58 * into the buffer pointed by script_name, and return 0. 77 * into the buffer pointed by script_name, and return 0.
@@ -87,6 +106,7 @@ static int list_scripts(char *script_name, bool *custom,
87 &scriptc); 106 &scriptc);
88 add_script_option("Show individual samples with source", "-F +srcline,+srccode", 107 add_script_option("Show individual samples with source", "-F +srcline,+srccode",
89 &scriptc); 108 &scriptc);
109 perf_config(scripts_config, &scriptc);
90 custom_perf = scriptc.index; 110 custom_perf = scriptc.index;
91 add_script_option("Show samples with custom perf script arguments", "", &scriptc); 111 add_script_option("Show samples with custom perf script arguments", "", &scriptc);
92 i = scriptc.index; 112 i = scriptc.index;