Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754966AbbKQWg5 (ORCPT ); Tue, 17 Nov 2015 17:36:57 -0500 Received: from mail-pa0-f54.google.com ([209.85.220.54]:35352 "EHLO mail-pa0-f54.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754729AbbKQWgk (ORCPT ); Tue, 17 Nov 2015 17:36:40 -0500 User-Agent: K-9 Mail for Android In-Reply-To: <1447768424-17327-1-git-send-email-treeze.taeung@gmail.com> References: <1447768424-17327-1-git-send-email-treeze.taeung@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Subject: Re: [PATCH v11 01/24] perf tools: Add 'perf-config' command From: Namhyung Kim Date: Wed, 18 Nov 2015 07:36:31 +0900 To: Taeung Song , Arnaldo Carvalho de Melo CC: linux-kernel@vger.kernel.org, Ingo Molnar , Namhyung Kim , Jiri Olsa Message-ID: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 4993 Lines: 167 Hi Taeung, On 2015년 11월 17일 오후 10시 53분 21초 GMT+09:00, Taeung Song wrote: >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: Jiri Olsa >Signed-off-by: Taeung Song Acked-by: Namhyung Kim Thanks Namhyung >--- > 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 >+ * >+ */ >+#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 }, -- Sent from my Android device with K-9 Mail. Please excuse my brevity. -- 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/