From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932241AbcELK0i (ORCPT ); Thu, 12 May 2016 06:26:38 -0400 Received: from terminus.zytor.com ([198.137.202.10]:37904 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751105AbcELK0g (ORCPT ); Thu, 12 May 2016 06:26:36 -0400 Date: Thu, 12 May 2016 03:26:00 -0700 From: tip-bot for Masami Hiramatsu Message-ID: Cc: linux-kernel@vger.kernel.org, hemant@linux.vnet.ibm.com, ananth@linux.vnet.ibm.com, peterz@infradead.org, mhiramat@kernel.org, acme@redhat.com, hpa@zytor.com, mingo@kernel.org, brendan.d.gregg@gmail.com, namhyung@kernel.org, tglx@linutronix.de Reply-To: linux-kernel@vger.kernel.org, hemant@linux.vnet.ibm.com, ananth@linux.vnet.ibm.com, mhiramat@kernel.org, acme@redhat.com, hpa@zytor.com, peterz@infradead.org, mingo@kernel.org, brendan.d.gregg@gmail.com, tglx@linutronix.de, namhyung@kernel.org In-Reply-To: <20160511135208.23943.68071.stgit@devbox> References: <20160511135208.23943.68071.stgit@devbox> To: linux-tip-commits@vger.kernel.org Subject: [tip:perf/core] perf symbols: Use lsdir() for the search in kcore cache directory Git-Commit-ID: c48903b816e6cdffb09b473352851bf199d0c582 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: c48903b816e6cdffb09b473352851bf199d0c582 Gitweb: http://git.kernel.org/tip/c48903b816e6cdffb09b473352851bf199d0c582 Author: Masami Hiramatsu AuthorDate: Wed, 11 May 2016 22:52:08 +0900 Committer: Arnaldo Carvalho de Melo CommitDate: Wed, 11 May 2016 13:06:07 -0300 perf symbols: Use lsdir() for the search in kcore cache directory Use lsdir() to search in kcore cache directory. This also avoids checking hidden dot directory entries, because kcore cache directories must always have the name from timestamps when taking the kcore snapshots, and it never start with dot. Signed-off-by: Masami Hiramatsu Cc: Ananth N Mavinakayanahalli Cc: Brendan Gregg Cc: Hemant Kumar Cc: Namhyung Kim Cc: Peter Zijlstra Link: http://lkml.kernel.org/r/20160511135208.23943.68071.stgit@devbox Signed-off-by: Arnaldo Carvalho de Melo --- tools/perf/util/symbol.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/tools/perf/util/symbol.c b/tools/perf/util/symbol.c index 4ada5a4..7fb3330 100644 --- a/tools/perf/util/symbol.c +++ b/tools/perf/util/symbol.c @@ -1608,25 +1608,27 @@ out: return err; } +static bool visible_dir_filter(const char *name, struct dirent *d) +{ + if (d->d_type != DT_DIR) + return false; + return lsdir_no_dot_filter(name, d); +} + static int find_matching_kcore(struct map *map, char *dir, size_t dir_sz) { char kallsyms_filename[PATH_MAX]; - struct dirent *dent; int ret = -1; - DIR *d; + struct strlist *dirs; + struct str_node *nd; - d = opendir(dir); - if (!d) + dirs = lsdir(dir, visible_dir_filter); + if (!dirs) return -1; - while (1) { - dent = readdir(d); - if (!dent) - break; - if (dent->d_type != DT_DIR) - continue; + strlist__for_each(nd, dirs) { scnprintf(kallsyms_filename, sizeof(kallsyms_filename), - "%s/%s/kallsyms", dir, dent->d_name); + "%s/%s/kallsyms", dir, nd->s); if (!validate_kcore_addresses(kallsyms_filename, map)) { strlcpy(dir, kallsyms_filename, dir_sz); ret = 0; @@ -1634,7 +1636,7 @@ static int find_matching_kcore(struct map *map, char *dir, size_t dir_sz) } } - closedir(d); + strlist__delete(dirs); return ret; }