lkml.org 
[lkml]   [2015]   [Nov]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v11 01/24] perf tools: Add 'perf-config' command
    Date
    The perf configuration file contains many variables to change various
    aspects of each of its tools, including output, disk usage, etc.
    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 '--list' option.

    perf config [options]

    display current perf config variables.
    # perf config -l | --list

    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
    ---
    tools/perf/Build | 1 +
    tools/perf/builtin-config.c | 66 +++++++++++++++++++++++++++++++++++++++++++++
    tools/perf/builtin.h | 1 +
    tools/perf/command-list.txt | 1 +
    tools/perf/perf.c | 1 +
    5 files changed, 70 insertions(+)
    create mode 100644 tools/perf/builtin-config.c

    diff --git a/tools/perf/Build b/tools/perf/Build
    index 7223745..2c7aaf2 100644
    --- a/tools/perf/Build
    +++ b/tools/perf/Build
    @@ -1,5 +1,6 @@
    perf-y += builtin-bench.o
    perf-y += builtin-annotate.o
    +perf-y += builtin-config.o
    perf-y += builtin-diff.o
    perf-y += builtin-evlist.o
    perf-y += builtin-help.o
    diff --git a/tools/perf/builtin-config.c b/tools/perf/builtin-config.c
    new file mode 100644
    index 0000000..427ea7a
    --- /dev/null
    +++ b/tools/perf/builtin-config.c
    @@ -0,0 +1,66 @@
    +/*
    + * 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 const char * const config_usage[] = {
    + "perf config [options]",
    + NULL
    +};
    +
    +enum actions {
    + ACTION_LIST = 1
    +} actions;
    +
    +static struct option config_options[] = {
    + OPT_SET_UINT('l', "list", &actions,
    + "show current config variables", ACTION_LIST),
    + OPT_END()
    +};
    +
    +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);
    +
    + switch (actions) {
    + case ACTION_LIST:
    + if (argc) {
    + pr_err("Error: takes no arguments\n");
    + parse_options_usage(config_usage, config_options, "l", 1);
    + } else {
    + ret = perf_config(show_config, NULL);
    + if (ret < 0)
    + pr_err("Nothing configured, "
    + "please check your ~/.perfconfig file\n");
    + }
    + break;
    + default:
    + 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 3d4c7c0..4bee53c 100644
    --- a/tools/perf/perf.c
    +++ b/tools/perf/perf.c
    @@ -39,6 +39,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


    \
     
     \ /
      Last update: 2015-11-17 19:41    [W:2.315 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site