Commit e3b74de5 authored by Andi Kleen's avatar Andi Kleen Committed by Arnaldo Carvalho de Melo

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: default avatarAndi Kleen <ak@linux.intel.com>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Link: http://lkml.kernel.org/r/20190311144502.15423-10-andi@firstfloor.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 59c24980
...@@ -590,6 +590,14 @@ samples.*:: ...@@ -590,6 +590,14 @@ samples.*::
Define how many ns worth of time to show Define how many ns worth of time to show
around samples in perf report sample context browser. around samples in perf report sample context browser.
scripts.*::
Any option defines a script that is added to the scripts menu
in the interactive perf browser and whose output is displayed.
The name of the option is the name, the value is a script command line.
The script gets the same options passed as a full perf script,
in particular -i perfdata file, --cpu, --tid
SEE ALSO SEE ALSO
-------- --------
linkperf:perf[1] linkperf:perf[1]
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "../../util/symbol.h" #include "../../util/symbol.h"
#include "../browser.h" #include "../browser.h"
#include "../libslang.h" #include "../libslang.h"
#include "config.h"
#define SCRIPT_NAMELEN 128 #define SCRIPT_NAMELEN 128
#define SCRIPT_MAX_NO 64 #define SCRIPT_MAX_NO 64
...@@ -53,6 +54,24 @@ static int add_script_option(const char *name, const char *opt, ...@@ -53,6 +54,24 @@ static int add_script_option(const char *name, const char *opt,
return 0; return 0;
} }
static int scripts_config(const char *var, const char *value, void *data)
{
struct script_config *c = data;
if (!strstarts(var, "scripts."))
return -1;
if (c->index >= SCRIPT_MAX_NO)
return -1;
c->names[c->index] = strdup(var + 7);
if (!c->names[c->index])
return -1;
if (asprintf(&c->paths[c->index], "%s %s", value,
c->extra_format) < 0)
return -1;
c->index++;
return 0;
}
/* /*
* When success, will copy the full path of the selected script * When success, will copy the full path of the selected script
* into the buffer pointed by script_name, and return 0. * into the buffer pointed by script_name, and return 0.
...@@ -87,6 +106,7 @@ static int list_scripts(char *script_name, bool *custom, ...@@ -87,6 +106,7 @@ static int list_scripts(char *script_name, bool *custom,
&scriptc); &scriptc);
add_script_option("Show individual samples with source", "-F +srcline,+srccode", add_script_option("Show individual samples with source", "-F +srcline,+srccode",
&scriptc); &scriptc);
perf_config(scripts_config, &scriptc);
custom_perf = scriptc.index; custom_perf = scriptc.index;
add_script_option("Show samples with custom perf script arguments", "", &scriptc); add_script_option("Show samples with custom perf script arguments", "", &scriptc);
i = scriptc.index; i = scriptc.index;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment