lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-Id: <1464072626-21161-2-git-send-email-treeze.taeung@gmail.com> Date: Tue, 24 May 2016 15:50:20 +0900 From: Taeung Song <treeze.taeung@...il.com> To: Arnaldo Carvalho de Melo <acme@...nel.org> Cc: linux-kernel@...r.kernel.org, Jiri Olsa <jolsa@...nel.org>, Namhyung Kim <namhyung@...nel.org>, Ingo Molnar <mingo@...nel.org>, Peter Zijlstra <peterz@...radead.org>, Alexander Shishkin <alexander.shishkin@...ux.intel.com>, Masami Hiramatsu <masami.hiramatsu.pt@...achi.com>, Taeung Song <treeze.taeung@...il.com>, Jiri Olsa <jolsa@...hat.com>, Wang Nan <wangnan0@...wei.com>, Ingo Molnar <mingo@...hat.com>, Masami Hiramatsu <mhiramat@...nel.org> Subject: [PATCH v3 1/7] perf config: Introduce default_config_item for default config key-value pairs When initializing default perf config values, we currently use values of actual type(int, bool, char *, etc.). 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, }; By the way, I suggest using 'struct default_config_item' that have default config key-value pairs and then initializing default config values with them, in near future. Because if we do, we can manage default perf config values at one spot (like util/config.c) with default config arrays and It can be easy and simple to modify default config values or add new configs. Cc: Namhyung Kim <namhyung@...nel.org> Cc: Jiri Olsa <jolsa@...hat.com> Cc: Wang Nan <wangnan0@...wei.com> Cc: Peter Zijlstra <peterz@...radead.org> Cc: Ingo Molnar <mingo@...hat.com> Cc: Masami Hiramatsu <mhiramat@...nel.org> Cc: Alexander Shishkin <alexander.shishkin@...ux.intel.com> Signed-off-by: Taeung Song <treeze.taeung@...il.com> --- tools/perf/util/config.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/tools/perf/util/config.h b/tools/perf/util/config.h index 22ec626..5a11ca6 100644 --- a/tools/perf/util/config.h +++ b/tools/perf/util/config.h @@ -4,6 +4,30 @@ #include <stdbool.h> #include <linux/list.h> +enum perf_config_type { + CONFIG_TYPE_BOOL, + CONFIG_TYPE_INT, + CONFIG_TYPE_LONG, + CONFIG_TYPE_U64, + CONFIG_TYPE_FLOAT, + CONFIG_TYPE_DOUBLE, + CONFIG_TYPE_STRING +}; + +struct default_config_item { + const char *name; + union { + bool b; + int i; + u32 l; + u64 ll; + float f; + double d; + const char *s; + } value; + enum perf_config_type type; +}; + struct perf_config_item { char *name; char *value; @@ -20,6 +44,26 @@ struct perf_config_set { struct list_head sections; }; +#define CONF_VAR(_name, _field, _val, _type) \ + { .name = _name, .value._field = _val, .type = _type } + +#define CONF_BOOL_VAR(_name, _val) \ + CONF_VAR(_name, b, _val, CONFIG_TYPE_BOOL) +#define CONF_INT_VAR(_name, _val) \ + CONF_VAR(_name, i, _val, CONFIG_TYPE_INT) +#define CONF_LONG_VAR(_name, _val) \ + CONF_VAR(_name, l, _val, CONFIG_TYPE_LONG) +#define CONF_U64_VAR(_name, _val) \ + CONF_VAR(_name, ll, _val, CONFIG_TYPE_U64) +#define CONF_FLOAT_VAR(_name, _val) \ + CONF_VAR(_name, f, _val, CONFIG_TYPE_FLOAT) +#define CONF_DOUBLE_VAR(_name, _val) \ + CONF_VAR(_name, d, _val, CONFIG_TYPE_DOUBLE) +#define CONF_STR_VAR(_name, _val) \ + CONF_VAR(_name, s, _val, CONFIG_TYPE_STRING) +#define CONF_END() \ + { .name = NULL } + struct perf_config_set *perf_config_set__new(void); void perf_config_set__delete(struct perf_config_set *set); -- 2.5.0
Powered by blists - more mailing lists