Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754604AbcK1Ivj (ORCPT ); Mon, 28 Nov 2016 03:51:39 -0500 Received: from mail-pg0-f66.google.com ([74.125.83.66]:33087 "EHLO mail-pg0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754551AbcK1IvZ (ORCPT ); Mon, 28 Nov 2016 03:51:25 -0500 From: Taeung Song To: Arnaldo Carvalho de Melo Cc: linux-kernel@vger.kernel.org, Jiri Olsa , Namhyung Kim , Ingo Molnar , Peter Zijlstra , Wang Nan , Taeung Song Subject: [PATCH v9 0/7] perf config: Introduce default config key-value pairs arrays Date: Mon, 28 Nov 2016 17:51:11 +0900 Message-Id: <1480323078-15623-1-git-send-email-treeze.taeung@gmail.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3644 Lines: 106 Hello, :) When initializing default perf config values, we currently use values of actual type(int, bool, char *, etc.). But I suggest using default config key-value pairs arrays. For example, If there isn't a user config value for 'annotate.use_offset' config variable at ~/.perfconfig, 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 if we use new config arrays that have all default config key-value pairs, we could initialize default config values with them. 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 existing default config values or add default values for new config item. 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.b instead of actual boolean type value 'true'. IMHO, I think it would 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 v9: - rebased on current acme/perf/core v8: - rebased on current acme/perf/core v7: - fix wrong handling a exception from strdup (Arnaldo) - rebased on current acme/perf/core v6: - rename 'fore_back_colors' to simple 'colors' of ui_browser_colorset (Namhyung) - remove unnecssary whitespace changes of PATCH 4/7, 5/7 (Namhyung) - make more general macro instead of making accessor macro for each config section (Namhyung) - rebased on current acme/perf/core v5: - rebased on current acme/perf/core v4: - rename 'fb_ground' to 'fore_back_colors' (Namhyung) - add struct default_config_section - split first patch[PATCH 1/7] as two - remove perf_default_config_init() at perf.c - rebased on current acme/perf/core v3: - remove default config arrays for the rest sections except 'colors' and 'annotate' - use combined {fore, back}ground colors instead of each two color - introduce perf_default_config_init() that call all default_*_config_init() for each config section v2: - rename 'ui_browser__config_gcolors' to 'ui_browser__config_colors' (Arnaldo) - change 'ground colors' to '{back, fore}ground colors' (Arnaldo) - use strtok + ltrim instead of strchr and while (isspace(*++bg)); (Arnaldo) Taeung Song (7): perf config: Introduce default_config_section and default_config_item for default config key-value pairs perf config: Add macros assigning key-value pairs to default_config_item perf config: Add default section and item arrays for 'colors' config perf config: Use combined {fore,back}ground colors value instead of each two color perf config: Initialize ui_browser__colorsets with default config items perf config: Add default section and item arrays for 'annotate' config perf config: Initialize annotate_browser__opts with default config items tools/perf/ui/browser.c | 64 +++++++++++++++++-------------- tools/perf/ui/browsers/annotate.c | 16 ++++++-- tools/perf/util/config.c | 26 +++++++++++++ tools/perf/util/config.h | 80 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 154 insertions(+), 32 deletions(-) -- 2.7.4