From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752823AbcEILmG (ORCPT ); Mon, 9 May 2016 07:42:06 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:36113 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752614AbcEILmD (ORCPT ); Mon, 9 May 2016 07:42:03 -0400 From: Taeung Song To: Arnaldo Carvalho de Melo Cc: linux-kernel@vger.kernel.org, Jiri Olsa , Namhyung Kim , Ingo Molnar , Peter Zijlstra , Alexander Shishkin , Taeung Song Subject: [PATCH 3/4] perf config: Initialize ui_browser__colorsets with default config items Date: Mon, 9 May 2016 20:41:48 +0900 Message-Id: <1462794109-14652-4-git-send-email-treeze.taeung@gmail.com> X-Mailer: git-send-email 2.5.0 In-Reply-To: <1462794109-14652-1-git-send-email-treeze.taeung@gmail.com> References: <1462794109-14652-1-git-send-email-treeze.taeung@gmail.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Set default config values for 'colors' section with 'colors_config_items[]' instead of actual const char * type values. (e.g. using colors_config_item[CONFIG_COLORS_TOP].value instead of "red, default" string value for 'colors.top') Cc: Namhyung Kim Cc: Jiri Olsa Signed-off-by: Taeung Song --- tools/perf/ui/browser.c | 46 ++++++++++++++++++++++++++++++++-------------- tools/perf/ui/browser.h | 1 + tools/perf/ui/tui/setup.c | 1 + tools/perf/util/cache.h | 1 + tools/perf/util/config.h | 12 ++++++++++++ 5 files changed, 47 insertions(+), 14 deletions(-) diff --git a/tools/perf/ui/browser.c b/tools/perf/ui/browser.c index a477867..385d0de 100644 --- a/tools/perf/ui/browser.c +++ b/tools/perf/ui/browser.c @@ -509,44 +509,30 @@ static struct ui_browser_colorset { { .colorset = HE_COLORSET_TOP, .name = "top", - .fg = "red", - .bg = "default", }, { .colorset = HE_COLORSET_MEDIUM, .name = "medium", - .fg = "green", - .bg = "default", }, { .colorset = HE_COLORSET_NORMAL, .name = "normal", - .fg = "default", - .bg = "default", }, { .colorset = HE_COLORSET_SELECTED, .name = "selected", - .fg = "black", - .bg = "yellow", }, { .colorset = HE_COLORSET_JUMP_ARROWS, .name = "jump_arrows", - .fg = "blue", - .bg = "default", }, { .colorset = HE_COLORSET_ADDR, .name = "addr", - .fg = "magenta", - .bg = "default", }, { .colorset = HE_COLORSET_ROOT, .name = "root", - .fg = "white", - .bg = "blue", }, { .name = NULL, @@ -591,6 +577,7 @@ static int ui_browser__color_config(const char *var, const char *value, if (strcmp(ui_browser__colorsets[i].name, name) != 0) continue; + zfree((char **)&ui_browser__colorsets[i].fg); ret = ui_browser__config_gcolors(&ui_browser__colorsets[i], value); break; } @@ -745,10 +732,41 @@ void __ui_browser__line_arrow(struct ui_browser *browser, unsigned int column, __ui_browser__line_arrow_down(browser, column, start, end); } +static void ui_browser__free_color_configs(void) +{ + int i; + + for (i = 0; ui_browser__colorsets[i].name != NULL; ++i) + zfree((char **)&ui_browser__colorsets[i].fg); +} + +void ui_browser__free(void) +{ + ui_browser__free_color_configs(); +} + +static void ui_browser__init_colorsets(void) +{ + int i, j; + + for (i = 0; ui_browser__colorsets[i].name != NULL; ++i) { + const char *name = ui_browser__colorsets[i].name; + + for (j = 0; colors_config_items[j].name != NULL; j++) { + if (!strcmp(name, colors_config_items[j].name)) { + ui_browser__config_gcolors(&ui_browser__colorsets[i], + colors_config_items[j].value.s); + break; + } + } + } +} + void ui_browser__init(void) { int i = 0; + ui_browser__init_colorsets(); perf_config(ui_browser__color_config, NULL); while (ui_browser__colorsets[i].name) { diff --git a/tools/perf/ui/browser.h b/tools/perf/ui/browser.h index be3b70e..7a83a1a 100644 --- a/tools/perf/ui/browser.h +++ b/tools/perf/ui/browser.h @@ -74,5 +74,6 @@ void ui_browser__list_head_seek(struct ui_browser *browser, off_t offset, int wh unsigned int ui_browser__list_head_refresh(struct ui_browser *browser); void ui_browser__init(void); +void ui_browser__free(void); void annotate_browser__init(void); #endif /* _PERF_UI_BROWSER_H_ */ diff --git a/tools/perf/ui/tui/setup.c b/tools/perf/ui/tui/setup.c index 7dfeba0..7999a57 100644 --- a/tools/perf/ui/tui/setup.c +++ b/tools/perf/ui/tui/setup.c @@ -171,4 +171,5 @@ void ui__exit(bool wait_for_ok) SLang_reset_tty(); perf_error__unregister(&perf_tui_eops); + ui_browser__free(); } diff --git a/tools/perf/util/cache.h b/tools/perf/util/cache.h index 1f5a93c..8eab653 100644 --- a/tools/perf/util/cache.h +++ b/tools/perf/util/cache.h @@ -7,6 +7,7 @@ #include #include "../perf.h" #include "../ui/ui.h" +#include "config.h" #include diff --git a/tools/perf/util/config.h b/tools/perf/util/config.h index 84414af..e0c8392 100644 --- a/tools/perf/util/config.h +++ b/tools/perf/util/config.h @@ -44,6 +44,16 @@ struct perf_config_set { struct list_head sections; }; +enum colors_config_items_idx { + CONFIG_COLORS_TOP, + CONFIG_COLORS_MEDIUM, + CONFIG_COLORS_NORMAL, + CONFIG_COLORS_SELECTED, + CONFIG_COLORS_JUMP_ARROWS, + CONFIG_COLORS_ADDR, + CONFIG_COLORS_ROOT, +}; + #define CONF_VAR(_name, _field, _val, _type) \ { .name = _name, .value._field = _val, .type = _type } @@ -64,6 +74,8 @@ struct perf_config_set { #define CONF_END() \ { .name = NULL } +extern const struct default_config_item colors_config_items[]; + struct perf_config_set *perf_config_set__new(void); void perf_config_set__delete(struct perf_config_set *set); -- 2.5.0