The config set is prepared by collecting all configs from config files (i.e. user config ~/.perfconfig and system config $(sysconfdir)/perfconfig) so the config set contains all config key-value pairs.
We need to use it as global variable to share it. And in near future, the variable will be handled in perf_config() and other functions at util/config.c Cc: Namhyung Kim <namhy...@kernel.org> Cc: Jiri Olsa <jo...@redhat.com> Cc: Masami Hiramatsu <mhira...@kernel.org> Cc: Alexander Shishkin <alexander.shish...@linux.intel.com> Signed-off-by: Taeung Song <treeze.tae...@gmail.com> --- tools/perf/builtin-config.c | 9 ++++----- tools/perf/util/config.c | 1 + tools/perf/util/config.h | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c index fe1b77f..b3bc01a 100644 --- a/tools/perf/builtin-config.c +++ b/tools/perf/builtin-config.c @@ -62,7 +62,6 @@ static int show_config(struct perf_config_set *set) int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) { int ret = 0; - struct perf_config_set *set; char *user_config = mkpath("%s/.perfconfig", getenv("HOME")); argc = parse_options(argc, argv, config_options, config_usage, @@ -80,8 +79,8 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) else if (use_user_config) config_exclusive_filename = user_config; - set = perf_config_set__new(); - if (!set) { + config_set = perf_config_set__new(); + if (!config_set) { ret = -1; goto out_err; } @@ -92,7 +91,7 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) pr_err("Error: takes no arguments\n"); parse_options_usage(config_usage, config_options, "l", 1); } else { - ret = show_config(set); + ret = show_config(config_set); if (ret < 0) { const char * config_filename = config_exclusive_filename; if (!config_exclusive_filename) @@ -106,7 +105,7 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) usage_with_options(config_usage, config_options); } - perf_config_set__delete(set); + perf_config_set__delete(config_set); out_err: return ret; } diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c index 6bfa112..21b7ca8 100644 --- a/tools/perf/util/config.c +++ b/tools/perf/util/config.c @@ -28,6 +28,7 @@ static int config_linenr; static int config_file_eof; const char *config_exclusive_filename; +struct perf_config_set *config_set; static int get_next_char(void) { diff --git a/tools/perf/util/config.h b/tools/perf/util/config.h index 22ec626..ea157a4 100644 --- a/tools/perf/util/config.h +++ b/tools/perf/util/config.h @@ -20,6 +20,8 @@ struct perf_config_set { struct list_head sections; }; +extern struct perf_config_set *config_set; + struct perf_config_set *perf_config_set__new(void); void perf_config_set__delete(struct perf_config_set *set); -- 2.5.0