Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1396967 > unrolled thread

[PATCH 0/4] perf config: Introduce default config key-value pairs arrays

Started byTaeung Song <treeze.taeung@gmail.com>
First post2016-05-09 13:50 +0200
Last post2016-05-09 13:50 +0200
Articles 2 — 1 participant

Back to article view | Back to linux.kernel


Contents

  [PATCH 0/4] perf config: Introduce default config key-value pairs arrays Taeung Song <treeze.taeung@gmail.com> - 2016-05-09 13:50 +0200
    [PATCH 4/4] perf config: Initialize annotate_browser__opts with default config items Taeung Song <treeze.taeung@gmail.com> - 2016-05-09 13:50 +0200

#1396967 — [PATCH 0/4] perf config: Introduce default config key-value pairs arrays

FromTaeung Song <treeze.taeung@gmail.com>
Date2016-05-09 13:50 +0200
Subject[PATCH 0/4] perf config: Introduce default config key-value pairs arrays
Message-ID<rwRRf-4H5-5@gated-at.bofh.it>
We currently use values of actual type(int, bool, char *, etc.)
when initializing default perf config values.

For example,
If there isn't user config value at ~/.perfconfig for 'annotate.use_offset' config variable,
default value for it is 'true' bool type value in perf like below.

At ui/browsers/annoate.c

static struct annotate_browser_opt {
       bool hide_src_code,
            use_offset,
	    jump_arrows,
	    show_linenr,
	    show_nr_jumps,
	    show_total_period;
} annotate_browser__opts = {
       .use_offset      = true,
       .jump_arrows     = true,
};

But I suggest using new config arrays that have all default config key-value pairs
and then initializing default config values with them.
Because if we do, we can manage default perf config values at one spot (like util/config.c)
and It can be easy and simple to modify default config values or add new configs.

For example,
If we use new default config arrays and there isn't user config value for 'annoate.use_offset'
default value for it will be set as annotate_config_items[CONFIG_ANNOATE_USE_OFFSET].value
instead of actual boolean type value 'true'.

IMHO, I think it should be needed to use new default config arrays
to manage default perf config values more effectively.
And this pathset contains patchs for only 'colors' and 'annoate' section
because waiting for other opinions.

If you review this patchset, I'd appreciate it :-)

Thanks,
Taeung

Taeung Song (4):
  perf config: Introduce default_config_item for all default config
    key-value pairs
  perf tools: Separate out code setting ground colors from
    ui_browser__color_config
  perf config: Initialize ui_browser__colorsets with default config
    items
  perf config: Initialize annotate_browser__opts with default config
    items

 tools/perf/ui/browser.c           |  89 ++++++++++++++--------
 tools/perf/ui/browser.h           |   1 +
 tools/perf/ui/browsers/annotate.c |  12 ++-
 tools/perf/ui/tui/setup.c         |   1 +
 tools/perf/util/cache.h           |   1 +
 tools/perf/util/config.c          | 150 +++++++++++++++++++++++++++++++++++++-
 tools/perf/util/config.h          |  74 ++++++++++++++++++-
 7 files changed, 291 insertions(+), 37 deletions(-)

-- 
2.5.0

[toc] | [next] | [standalone]


#1396968 — [PATCH 4/4] perf config: Initialize annotate_browser__opts with default config items

FromTaeung Song <treeze.taeung@gmail.com>
Date2016-05-09 13:50 +0200
Subject[PATCH 4/4] perf config: Initialize annotate_browser__opts with default config items
Message-ID<rwRRg-4H5-17@gated-at.bofh.it>
In reply to#1396967
Set default config values for 'annotate' section with 'annotate_config_items[]'
instead of actual bool type values.
(e.g. using annotate_config_items[CONFIG_ANNOTATE_USE_OFFSET].value
instead of 'true' bool type value for 'annotate.use_offset'.)

Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
---
 tools/perf/ui/browsers/annotate.c | 12 ++++++++----
 tools/perf/util/config.h          | 16 ++++++++++++++++
 2 files changed, 24 insertions(+), 4 deletions(-)

diff --git a/tools/perf/ui/browsers/annotate.c b/tools/perf/ui/browsers/annotate.c
index 4fc208e..f52e1ea 100644
--- a/tools/perf/ui/browsers/annotate.c
+++ b/tools/perf/ui/browsers/annotate.c
@@ -37,10 +37,7 @@ static struct annotate_browser_opt {
 	     show_linenr,
 	     show_nr_jumps,
 	     show_total_period;
-} annotate_browser__opts = {
-	.use_offset	= true,
-	.jump_arrows	= true,
-};
+} annotate_browser__opts;
 
 struct annotate_browser {
 	struct ui_browser b;
@@ -1160,5 +1157,12 @@ static int annotate__config(const char *var, const char *value,
 
 void annotate_browser__init(void)
 {
+	annotate_browser__opts.hide_src_code = CONF_ANNOTATE_DEFAULT_VAL(HIDE_SRC_CODE, b);
+	annotate_browser__opts.use_offset = CONF_ANNOTATE_DEFAULT_VAL(USE_OFFSET, b);
+	annotate_browser__opts.jump_arrows = CONF_ANNOTATE_DEFAULT_VAL(JUMP_ARROWS, b);
+	annotate_browser__opts.show_linenr = CONF_ANNOTATE_DEFAULT_VAL(SHOW_LINENR, b);
+	annotate_browser__opts.show_nr_jumps = CONF_ANNOTATE_DEFAULT_VAL(SHOW_NR_JUMPS, b);
+	annotate_browser__opts.show_total_period = CONF_ANNOTATE_DEFAULT_VAL(SHOW_TOTAL_PERIOD, b);
+
 	perf_config(annotate__config, NULL);
 }
diff --git a/tools/perf/util/config.h b/tools/perf/util/config.h
index e0c8392..344b344 100644
--- a/tools/perf/util/config.h
+++ b/tools/perf/util/config.h
@@ -54,6 +54,15 @@ enum colors_config_items_idx {
 	CONFIG_COLORS_ROOT,
 };
 
+enum annotate_config_items_idx {
+	CONFIG_ANNOTATE_HIDE_SRC_CODE,
+	CONFIG_ANNOTATE_USE_OFFSET,
+	CONFIG_ANNOTATE_JUMP_ARROWS,
+	CONFIG_ANNOTATE_SHOW_NR_JUMPS,
+	CONFIG_ANNOTATE_SHOW_LINENR,
+	CONFIG_ANNOTATE_SHOW_TOTAL_PERIOD,
+};
+
 #define CONF_VAR(_name, _field, _val, _type)			\
 	{ .name = _name, .value._field = _val, .type = _type }
 
@@ -74,7 +83,14 @@ enum colors_config_items_idx {
 #define CONF_END()					\
 	{ .name = NULL }
 
+#define CONF_DEFAULT_VAL(section, name, field)			\
+	section##_config_items[CONFIG_##name].value.field
+
+#define CONF_ANNOTATE_DEFAULT_VAL(name, field)			\
+	CONF_DEFAULT_VAL(annotate, ANNOTATE_##name, field)
+
 extern const struct default_config_item colors_config_items[];
+extern const struct default_config_item annotate_config_items[];
 
 struct perf_config_set *perf_config_set__new(void);
 void perf_config_set__delete(struct perf_config_set *set);
-- 
2.5.0

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web