aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf
diff options
context:
space:
mode:
authorTaeung Song <treeze.taeung@gmail.com>2015-11-17 08:53:21 -0500
committerArnaldo Carvalho de Melo <acme@redhat.com>2015-11-23 16:31:24 -0500
commit30862f2c5725c46afcfab5af710fdf5163bf0f81 (patch)
treeabac32a35418ba8d1c8ab601c9ae9713a40b3236 /tools/perf
parent8bd508b001629a5d836987d9a0702a6bfc4fc705 (diff)
perf tools: Add 'perf config' command
The perf configuration file contains many variables to change various aspects of each of its tools, including output, disk usage, etc. But looking at the state of configuration is difficult and there's no documentation about config variables except for the variables in perfconfig.example exist. So this patch adds a 'perf-config' command with a '--list' option. perf config [options] display current perf config variables. # perf config -l | --list Signed-off-by: Taeung Song <treeze.taeung@gmail.com> Acked-by: Namhyung Kim <namhyung@kernel.org> Cc: Jiri Olsa <jolsa@redhat.com> Link: http://lkml.kernel.org/r/1447768424-17327-1-git-send-email-treeze.taeung@gmail.com Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf')
-rw-r--r--tools/perf/Build1
-rw-r--r--tools/perf/builtin-config.c66
-rw-r--r--tools/perf/builtin.h1
-rw-r--r--tools/perf/command-list.txt1
-rw-r--r--tools/perf/perf.c1
5 files changed, 70 insertions, 0 deletions
diff --git a/tools/perf/Build b/tools/perf/Build
index 72237455b400..2c7aaf2ba119 100644
--- a/tools/perf/Build
+++ b/tools/perf/Build
@@ -1,5 +1,6 @@
1perf-y += builtin-bench.o 1perf-y += builtin-bench.o
2perf-y += builtin-annotate.o 2perf-y += builtin-annotate.o
3perf-y += builtin-config.o
3perf-y += builtin-diff.o 4perf-y += builtin-diff.o
4perf-y += builtin-evlist.o 5perf-y += builtin-evlist.o
5perf-y += builtin-help.o 6perf-y += builtin-help.o
diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c
new file mode 100644
index 000000000000..427ea7a705b8
--- /dev/null
+++ b/tools/perf/builtin-config.c
@@ -0,0 +1,66 @@
1/*
2 * builtin-config.c
3 *
4 * Copyright (C) 2015, Taeung Song <treeze.taeung@gmail.com>
5 *
6 */
7#include "builtin.h"
8
9#include "perf.h"
10
11#include "util/cache.h"
12#include "util/parse-options.h"
13#include "util/util.h"
14#include "util/debug.h"
15
16static const char * const config_usage[] = {
17 "perf config [options]",
18 NULL
19};
20
21enum actions {
22 ACTION_LIST = 1
23} actions;
24
25static struct option config_options[] = {
26 OPT_SET_UINT('l', "list", &actions,
27 "show current config variables", ACTION_LIST),
28 OPT_END()
29};
30
31static int show_config(const char *key, const char *value,
32 void *cb __maybe_unused)
33{
34 if (value)
35 printf("%s=%s\n", key, value);
36 else
37 printf("%s\n", key);
38
39 return 0;
40}
41
42int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused)
43{
44 int ret = 0;
45
46 argc = parse_options(argc, argv, config_options, config_usage,
47 PARSE_OPT_STOP_AT_NON_OPTION);
48
49 switch (actions) {
50 case ACTION_LIST:
51 if (argc) {
52 pr_err("Error: takes no arguments\n");
53 parse_options_usage(config_usage, config_options, "l", 1);
54 } else {
55 ret = perf_config(show_config, NULL);
56 if (ret < 0)
57 pr_err("Nothing configured, "
58 "please check your ~/.perfconfig file\n");
59 }
60 break;
61 default:
62 usage_with_options(config_usage, config_options);
63 }
64
65 return ret;
66}
diff --git a/tools/perf/builtin.h b/tools/perf/builtin.h
index 3688ad29085f..3f871b54e261 100644
--- a/tools/perf/builtin.h
+++ b/tools/perf/builtin.h
@@ -17,6 +17,7 @@ extern int cmd_annotate(int argc, const char **argv, const char *prefix);
17extern int cmd_bench(int argc, const char **argv, const char *prefix); 17extern int cmd_bench(int argc, const char **argv, const char *prefix);
18extern int cmd_buildid_cache(int argc, const char **argv, const char *prefix); 18extern int cmd_buildid_cache(int argc, const char **argv, const char *prefix);
19extern int cmd_buildid_list(int argc, const char **argv, const char *prefix); 19extern int cmd_buildid_list(int argc, const char **argv, const char *prefix);
20extern int cmd_config(int argc, const char **argv, const char *prefix);
20extern int cmd_diff(int argc, const char **argv, const char *prefix); 21extern int cmd_diff(int argc, const char **argv, const char *prefix);
21extern int cmd_evlist(int argc, const char **argv, const char *prefix); 22extern int cmd_evlist(int argc, const char **argv, const char *prefix);
22extern int cmd_help(int argc, const char **argv, const char *prefix); 23extern int cmd_help(int argc, const char **argv, const char *prefix);
diff --git a/tools/perf/command-list.txt b/tools/perf/command-list.txt
index 00fcaf8a5b8d..acc3ea7d90b7 100644
--- a/tools/perf/command-list.txt
+++ b/tools/perf/command-list.txt
@@ -9,6 +9,7 @@ perf-buildid-cache mainporcelain common
9perf-buildid-list mainporcelain common 9perf-buildid-list mainporcelain common
10perf-data mainporcelain common 10perf-data mainporcelain common
11perf-diff mainporcelain common 11perf-diff mainporcelain common
12perf-config mainporcelain common
12perf-evlist mainporcelain common 13perf-evlist mainporcelain common
13perf-inject mainporcelain common 14perf-inject mainporcelain common
14perf-kmem mainporcelain common 15perf-kmem mainporcelain common
diff --git a/tools/perf/perf.c b/tools/perf/perf.c
index 3d4c7c09adea..4bee53c3f796 100644
--- a/tools/perf/perf.c
+++ b/tools/perf/perf.c
@@ -39,6 +39,7 @@ struct cmd_struct {
39static struct cmd_struct commands[] = { 39static struct cmd_struct commands[] = {
40 { "buildid-cache", cmd_buildid_cache, 0 }, 40 { "buildid-cache", cmd_buildid_cache, 0 },
41 { "buildid-list", cmd_buildid_list, 0 }, 41 { "buildid-list", cmd_buildid_list, 0 },
42 { "config", cmd_config, 0 },
42 { "diff", cmd_diff, 0 }, 43 { "diff", cmd_diff, 0 },
43 { "evlist", cmd_evlist, 0 }, 44 { "evlist", cmd_evlist, 0 },
44 { "help", cmd_help, 0 }, 45 { "help", cmd_help, 0 },