From: Namhyung Kim <namhyung@kernel.org>
To: Taeung Song <treeze.taeung@gmail.com>
Cc: Arnaldo Carvalho de Melo <acme@kernel.org>,
linux-kernel@vger.kernel.org, jolsa@redhat.com
Subject: Re: [PATCH 1/2] perf tools: Add 'perf-config' command
Date: Mon, 13 Apr 2015 15:16:26 +0900 [thread overview]
Message-ID: <20150413061626.GF23913@sejong> (raw)
In-Reply-To: <1428849889-14145-1-git-send-email-treeze.taeung@gmail.com>
Hi Taeung,
On Sun, Apr 12, 2015 at 11:44:48PM +0900, Taeung Song wrote:
> The perf configuration file contains many variables which can make
> the perf command's action more effective and more skilful.
> But looking through state of configuration is difficult and
> there's no knowing what kind of other variables except variables in perfconfig.example exist.
> So This patch adds 'perf-config' command with '--all' option and a document for it.
>
> Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
> ---
Thanks for your work!
I think the documentation updates need to be shared with tools
manpages, or at least they can point to this document for details.
This can be further work though. ;-)
[SNIP]
> diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c
> new file mode 100644
> index 0000000..7cf6d03
> --- /dev/null
> +++ b/tools/perf/builtin-config.c
> @@ -0,0 +1,71 @@
> +/*
> + * builtin-config.c
> + *
> + * Copyright (C) 2015, Taeung Song <treeze.taeung@gmail.com>
> + *
> + */
> +#include "builtin.h"
> +
> +#include "perf.h"
> +
> +#include "util/cache.h"
> +#include "util/parse-options.h"
> +#include "util/util.h"
> +#include "util/debug.h"
> +
> +static struct {
> + bool all_action;
> +} params;
> +
> +static const char * const config_usage[] = {
> + "perf config [options]",
> + NULL
> +};
> +static const struct option config_options[] = {
> + OPT_GROUP("Action"),
> + OPT_BOOLEAN('a', "all", ¶ms.all_action, "print all configurations"),
> + OPT_END()
> +};
> +
> +static void check_argc(int argc, int limit)
> +{
> + if (argc >= limit && argc <= limit)
> + return;
> + error("wrong number of arguments");
> + usage_with_options(config_usage, config_options);
> +}
I don't know why this is needed. The -a option won't need this and we
can support to get/set any number of config items IMHO.
> +
> +static int show_config(const char *key, const char *value,
> + void *cb __maybe_unused)
> +{
> + if (value)
> + printf("%s=%s\n", key, value);
> + else
> + printf("%s\n", key);
> +
> + return 0;
> +}
> +
> +int cmd_config(int argc, const char **argv, const char *prefix __maybe_unused)
> +{
> + int ret = 0;
> +
> + argc = parse_options(argc, argv, config_options, config_usage,
> + PARSE_OPT_STOP_AT_NON_OPTION);
> + if (argc > 0) {
> + if (strcmp(argv[0], "-") == 0) {
> + pr_warning(" Error: '-' is not supported.\n");
I don't understand this. Why is the "-" so special?
And I think current behavior don't allow any argument. So what about this?
argc = parse_options(...);
if (argc)
usage_with_options(...);
if (params.all_action)
...
> + usage_with_options(config_usage, config_options);
> + }
> + }
> +
> + if (argc == 0 || params.all_action) {
> + check_argc(argc, 0);
> + ret = perf_config(show_config, NULL);
But doesn't it just print currently set items in a config file? I
guess -a/--all option should show this *AND* all possible config items
with default values. Current behavior can be done by -l/--list option
like git-config..
Thanks,
Namhyung
> + } else {
> + pr_warning("Error: Unknown argument.\n");
> + usage_with_options(config_usage, config_options);
> + }
> +
> + return ret;
> +}
> diff --git a/tools/perf/builtin.h b/tools/perf/builtin.h
> index 3688ad2..3f871b5 100644
> --- a/tools/perf/builtin.h
> +++ b/tools/perf/builtin.h
> @@ -17,6 +17,7 @@ extern int cmd_annotate(int argc, const char **argv, const char *prefix);
> extern int cmd_bench(int argc, const char **argv, const char *prefix);
> extern int cmd_buildid_cache(int argc, const char **argv, const char *prefix);
> extern int cmd_buildid_list(int argc, const char **argv, const char *prefix);
> +extern int cmd_config(int argc, const char **argv, const char *prefix);
> extern int cmd_diff(int argc, const char **argv, const char *prefix);
> extern int cmd_evlist(int argc, const char **argv, const char *prefix);
> extern int cmd_help(int argc, const char **argv, const char *prefix);
> diff --git a/tools/perf/command-list.txt b/tools/perf/command-list.txt
> index 00fcaf8..acc3ea7 100644
> --- a/tools/perf/command-list.txt
> +++ b/tools/perf/command-list.txt
> @@ -9,6 +9,7 @@ perf-buildid-cache mainporcelain common
> perf-buildid-list mainporcelain common
> perf-data mainporcelain common
> perf-diff mainporcelain common
> +perf-config mainporcelain common
> perf-evlist mainporcelain common
> perf-inject mainporcelain common
> perf-kmem mainporcelain common
> diff --git a/tools/perf/perf.c b/tools/perf/perf.c
> index b857fcb..604fa4a 100644
> --- a/tools/perf/perf.c
> +++ b/tools/perf/perf.c
> @@ -37,6 +37,7 @@ struct cmd_struct {
> static struct cmd_struct commands[] = {
> { "buildid-cache", cmd_buildid_cache, 0 },
> { "buildid-list", cmd_buildid_list, 0 },
> + { "config", cmd_config, 0 },
> { "diff", cmd_diff, 0 },
> { "evlist", cmd_evlist, 0 },
> { "help", cmd_help, 0 },
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
next prev parent reply other threads:[~2015-04-13 6:22 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-12 14:44 [PATCH 1/2] perf tools: Add 'perf-config' command Taeung Song
2015-04-12 14:44 ` [PATCH 2/2] perf tools: Add a option 'remove' to perf-config and features which get or set a config variable Taeung Song
2015-04-13 6:55 ` Namhyung Kim
[not found] ` <6F8981BC-A058-4D84-93FC-B7CB8ADDCC53@gmail.com>
2015-04-19 3:42 ` Namhyung Kim
2015-04-13 6:16 ` Namhyung Kim [this message]
[not found] ` <5CB87CAF-B6EE-4AE0-BC3C-45CEF14C28EC@gmail.com>
2015-04-19 3:27 ` [PATCH 1/2] perf tools: Add 'perf-config' command Namhyung Kim
[not found] ` <70EA4387-5059-4026-8819-039474865EEE@gmail.com>
2015-04-19 3:34 ` Namhyung Kim
-- strict thread matches above, loose matches on Subject: below --
2015-04-09 14:26 Taeung Song
2015-04-09 15:57 ` Arnaldo Carvalho de Melo
2015-04-10 8:53 ` Jiri Olsa
2015-04-04 17:41 Taeung Song
2015-04-07 17:57 ` Jiri Olsa
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150413061626.GF23913@sejong \
--to=namhyung@kernel.org \
--cc=acme@kernel.org \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=treeze.taeung@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.