lkml.org 
[lkml]   [2015]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v11 19/24] perf config: Add a option 'skel' to perf-config
Date
Produce an skeleton with the possible config variables so
that one could then use $EDITOR ~/.perfconfig or
$(sysconfdir)/perfconfigand go on setting the knobs.

For the syntax examples,

# perf config -k | --skel
Initialize the possible config variables on config file.
# perf config --skel > ~/.perfconfig

Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
---
tools/perf/builtin-config.c | 30 +++++++++++++++++++++++++++++-
1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c
index 1073ac4..2f8be59 100644
--- a/tools/perf/builtin-config.c
+++ b/tools/perf/builtin-config.c
@@ -22,7 +22,8 @@ static const char * const config_usage[] = {

enum actions {
ACTION_LIST = 1,
- ACTION_LIST_ALL
+ ACTION_LIST_ALL,
+ ACTION_SKEL
} actions;

static struct option config_options[] = {
@@ -31,6 +32,9 @@ static struct option config_options[] = {
OPT_SET_UINT('a', "list-all", &actions,
"show current and all possible config"
" variables with default values", ACTION_LIST_ALL),
+ OPT_SET_UINT('k', "skel", &actions,
+ "produce an skeleton with the possible"
+ " config variables", ACTION_SKEL),
OPT_BOOLEAN(0, "system", &use_system_config, "use system config file"),
OPT_BOOLEAN(0, "user", &use_user_config, "use user config file"),
OPT_END()
@@ -276,6 +280,24 @@ static char *get_value(struct config_item *config)
return value;
}

+static int show_skel_config(void)
+{
+ char *section;
+
+ for (int i = 0; default_configs[i].type != CONFIG_END; i++) {
+ struct config_item *config = &default_configs[i];
+ char *value = get_value(config);
+ if (strcmp(section, config->section) != 0) {
+ section = (char *)config->section;
+ printf("\n[%s]\n", config->section);
+ }
+ printf("\t%s = %s\n", config->name, value);
+ free(value);
+ }
+
+ return 0;
+}
+
static int show_all_config(struct list_head *sections)
{
int i;
@@ -412,6 +434,12 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused)
perf_config(collect_current_config, &sections);

switch (actions) {
+ case ACTION_SKEL:
+ if (argc)
+ parse_options_usage(config_usage, config_options, "k", 1);
+ else
+ ret = show_skel_config();
+ break;
case ACTION_LIST_ALL:
if (argc == 0) {
ret = show_all_config(&sections);
--
1.9.1


\
 
 \ /
  Last update: 2015-11-17 20:01    [W:1.745 / U:1.592 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site