Messages in this thread | | | Subject | Re: [PATCH 1/6] perf config: Add support for getting config key-value pairs | From | Taeung Song <> | Date | Tue, 15 Nov 2016 01:21:22 +0900 |
| |
Hi, Arnaldo
Thank you for your reply :) I was worried lest you don't it..
On 11/15/2016 12:50 AM, Arnaldo Carvalho de Melo wrote: > Em Fri, Nov 04, 2016 at 03:44:17PM +0900, Taeung Song escreveu: >> Add a functionality getting specific config key-value pairs. >> For the syntax examples, >> >> perf config [<file-option>] [section.name ...] >> >> e.g. To query config items 'report.queue-size' and 'report.children', do >> >> # perf config report.queue-size report.children > > So, I'm applying it, but while testing I noticed that it shows only the > options that were explicitely set: > > [acme@jouet linux]$ perf config report.queue-size report.children > report.children=false > [acme@jouet linux]$ > > Perhaps we should, in a follow up patch, show this instead: > > [acme@jouet linux]$ perf config report.queue-size report.children > report.children=false > # report.queue-size=18446744073709551615 # Default, not set in ~/.perfconfig > [acme@jouet linux]$ > > ?
Yes, I agree it. I also think we should get not only config info in config files but also inbuilt default config info.
After this patchset (support config read/wirte) is applied, I'll send a follow up patch that contains default config array to show inbuilt default config info as you said!!
Is it OK ?
Thanks, Taeung
> >> Cc: Namhyung Kim <namhyung@kernel.org> >> Cc: Jiri Olsa <jolsa@kernel.org> >> Cc: Wang Nan <wangnan0@huawei.com> >> Signed-off-by: Taeung Song <treeze.taeung@gmail.com> >> --- >> tools/perf/builtin-config.c | 40 +++++++++++++++++++++++++++++++++++++--- >> 1 file changed, 37 insertions(+), 3 deletions(-) >> >> diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c >> index e4207a2..df3fa1c 100644 >> --- a/tools/perf/builtin-config.c >> +++ b/tools/perf/builtin-config.c >> @@ -17,7 +17,7 @@ >> static bool use_system_config, use_user_config; >> >> static const char * const config_usage[] = { >> - "perf config [<file-option>] [options]", >> + "perf config [<file-option>] [options] [section.name ...]", >> NULL >> }; >> >> @@ -33,6 +33,36 @@ static struct option config_options[] = { >> OPT_END() >> }; >> >> +static int show_spec_config(struct perf_config_set *set, const char *var) >> +{ >> + struct perf_config_section *section; >> + struct perf_config_item *item; >> + >> + if (set == NULL) >> + return -1; >> + >> + perf_config_items__for_each_entry(&set->sections, section) { >> + if (prefixcmp(var, section->name) != 0) >> + continue; >> + >> + perf_config_items__for_each_entry(§ion->items, item) { >> + const char *name = var + strlen(section->name) + 1; >> + >> + if (strcmp(name, item->name) == 0) { >> + char *value = item->value; >> + >> + if (value) { >> + printf("%s=%s\n", var, value); >> + return 0; >> + } >> + } >> + >> + } >> + } >> + >> + return 0; >> +} >> + >> static int show_config(struct perf_config_set *set) >> { >> struct perf_config_section *section; >> @@ -54,7 +84,7 @@ 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; >> + int i, ret = 0; >> struct perf_config_set *set; >> char *user_config = mkpath("%s/.perfconfig", getenv("HOME")); >> >> @@ -100,7 +130,11 @@ int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused) >> } >> break; >> default: >> - usage_with_options(config_usage, config_options); >> + if (argc) >> + for (i = 0; argv[i]; i++) >> + ret = show_spec_config(set, argv[i]); >> + else >> + usage_with_options(config_usage, config_options); >> } >> >> perf_config_set__delete(set); >> -- >> 2.7.4
| |