From: tip-bot for Taeung Song <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: hpa@zytor.com, namhyung@kernel.org,
alexander.shishkin@linux.intel.com, acme@redhat.com,
jolsa@redhat.com, peterz@infradead.org,
linux-kernel@vger.kernel.org, mhiramat@kernel.org,
mingo@kernel.org, tglx@linutronix.de, treeze.taeung@gmail.com
Subject: [tip:perf/core] perf config: Use new perf_config_set__init() to initialize config set
Date: Wed, 8 Jun 2016 01:45:19 -0700 [thread overview]
Message-ID: <tip-8beeb00f2c8498686eee02b8edcd1488b903c90b@git.kernel.org> (raw)
In-Reply-To: <1465291577-20973-3-git-send-email-treeze.taeung@gmail.com>
Commit-ID: 8beeb00f2c8498686eee02b8edcd1488b903c90b
Gitweb: http://git.kernel.org/tip/8beeb00f2c8498686eee02b8edcd1488b903c90b
Author: Taeung Song <treeze.taeung@gmail.com>
AuthorDate: Tue, 7 Jun 2016 18:26:12 +0900
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Tue, 7 Jun 2016 11:01:25 -0300
perf config: Use new perf_config_set__init() to initialize config set
Instead of perf_config(), this function initializes config set by
reading various files: user config ~/.perfconfig and system config
$(sysconfdir)/perfconfig).
If there are the same config variable in both user and system config
files, user config has higher priority than system config.
Signed-off-by: Taeung Song <treeze.taeung@gmail.com>
Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/1465291577-20973-3-git-send-email-treeze.taeung@gmail.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/config.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 46 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/config.c b/tools/perf/util/config.c
index e086f59..8749eca 100644
--- a/tools/perf/util/config.c
+++ b/tools/perf/util/config.c
@@ -646,13 +646,58 @@ out_free:
return -1;
}
+static int perf_config_set__init(struct perf_config_set *set)
+{
+ int ret = -1;
+ const char *home = NULL;
+
+ /* Setting $PERF_CONFIG makes perf read _only_ the given config file. */
+ if (config_exclusive_filename)
+ return perf_config_from_file(collect_config, config_exclusive_filename, set);
+ if (perf_config_system() && !access(perf_etc_perfconfig(), R_OK)) {
+ if (perf_config_from_file(collect_config, perf_etc_perfconfig(), set) < 0)
+ goto out;
+ }
+
+ home = getenv("HOME");
+ if (perf_config_global() && home) {
+ char *user_config = strdup(mkpath("%s/.perfconfig", home));
+ struct stat st;
+
+ if (user_config == NULL) {
+ warning("Not enough memory to process %s/.perfconfig, "
+ "ignoring it.", home);
+ goto out;
+ }
+
+ if (stat(user_config, &st) < 0)
+ goto out_free;
+
+ if (st.st_uid && (st.st_uid != geteuid())) {
+ warning("File %s not owned by current user or root, "
+ "ignoring it.", user_config);
+ goto out_free;
+ }
+
+ if (!st.st_size)
+ goto out_free;
+
+ ret = perf_config_from_file(collect_config, user_config, set);
+
+out_free:
+ free(user_config);
+ }
+out:
+ return ret;
+}
+
struct perf_config_set *perf_config_set__new(void)
{
struct perf_config_set *set = zalloc(sizeof(*set));
if (set) {
INIT_LIST_HEAD(&set->sections);
- if (perf_config(collect_config, set) < 0) {
+ if (perf_config_set__init(set) < 0) {
perf_config_set__delete(set);
set = NULL;
}
next prev parent reply other threads:[~2016-06-08 8:46 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-07 9:26 [RFC][PATCH v7 0/9] perf config: Reimplement perf_config() using perf_config_set__inter() Taeung Song
2016-06-07 9:26 ` [BUGFIX][PATCH v7 1/7] perf config: If collect_config() is failed, finally free a config set after it is done Taeung Song
2016-06-08 8:44 ` [tip:perf/core] perf config: Constructor should free its allocated memory when failing tip-bot for Taeung Song
2016-06-07 9:26 ` [PATCH v7 2/7] perf config: Use new perf_config_set__init() to initialize config set Taeung Song
2016-06-08 8:45 ` tip-bot for Taeung Song [this message]
2016-06-07 9:26 ` [PATCH v7 3/7] perf config: Add global variable 'config_set' Taeung Song
2016-06-07 14:05 ` Arnaldo Carvalho de Melo
2016-06-07 15:14 ` Taeung Song
2016-06-08 12:38 ` Taeung Song
2016-06-07 9:26 ` [PATCH v7 4/7] perf config: Use zfree() instead of free() at perf_config_set__delete() Taeung Song
2016-06-07 9:26 ` [PATCH v7 5/7] perf config: Reimplement perf_config() using perf_config_set__iter() Taeung Song
2016-06-07 9:26 ` [PATCH v7 6/7] perf config: Reset the config set at only 'config' sub-command Taeung Song
2016-06-07 9:26 ` [PATCH v7 7/7] perf config: Reimplement show_config() using perf_config() Taeung Song
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=tip-8beeb00f2c8498686eee02b8edcd1488b903c90b@git.kernel.org \
--to=tipbot@zytor.com \
--cc=acme@redhat.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=mhiramat@kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--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.