2
0
mirror of https://github.com/edk2-porting/linux-next.git synced 2024-12-16 01:04:08 +08:00

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>
This commit is contained in:
Andi Kleen 2019-03-11 07:45:00 -07:00 committed by Arnaldo Carvalho de Melo
parent 59c24980df
commit e3b74de50a
2 changed files with 28 additions and 0 deletions

View File

@ -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]

View File

@ -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,
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,
&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;