Re: [PATCH 3/4] perf tools: Add a option 'all' to perf-config.

Jiri Olsa
2015-05-04T08:56:32Z

On Mon, Apr 27, 2015 at 03:34:25PM +0900, Taeung Song wrote:
> A option 'all' is to display both current config variables and
> all possible config variables with default values.
> The syntax examples are like below
>
> perf config [options]
>
> display all perf config with default values.
> # perf config
> or
> # perf config -a | --all

hum, seems some values are mixed:

[jolsa@krava perf]$ ./perf config | grep size
call-graph.dump-size =
report.queue-size = true

SNIP

> struct list_head *sections;
> @@ -28,6 +29,8 @@ static const char * const config_usage[] = {
> static const struct option config_options[] = {
> OPT_GROUP("Action"),
> OPT_BOOLEAN('l', "list", &params.list_action, "show current config variables"),
> + OPT_BOOLEAN('a', "all", &params.all_action,
> + "show current and all possible config variables with default values"),
> OPT_END()
> };
>
> @@ -204,6 +207,49 @@ static int collect_config(const char *var, const char *value,
> return add_config_element(&section_node->element_head, subkey, value);
> }
>
> +static int merge_config(const char *var, const char *value,
> + void *cb __maybe_unused)
> +{
> + const char *section_name, *subkey;
> + parse_key(var, &section_name, &subkey);
> + return set_config(section_name, subkey, value);
> +}
> +
> +static int show_all_config(void)
> +{
> + int ret = 0;
> + struct config_section *section_node;
> + struct config_element *element_node;
> + char *pwd, *all_config;
> +
> + pwd = getenv("PWD");
> + all_config = strdup(mkpath("%s/util/PERFCONFIG-DEFAULT", pwd));

I haven't checked the whole code, but this cannot be dependent
on the presence of the kernel tree..

I'll give it more time later today

jirka