From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
Arnaldo Carvalho de Melo <acme@redhat.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Borislav Petkov <bp@suse.de>, David Ahern <dsahern@gmail.com>,
Don Zickus <dzickus@redhat.com>,
Frederic Weisbecker <fweisbec@gmail.com>,
Jiri Olsa <jolsa@redhat.com>, Namhyung Kim <namhyung@kernel.org>,
Stephane Eranian <eranian@google.com>
Subject: [PATCH 19/26] tools lib fs: Adopt debugfs open strerrno method
Date: Mon, 26 Jan 2015 14:47:22 -0300 [thread overview]
Message-ID: <1422294449-12735-20-git-send-email-acme@kernel.org> (raw)
In-Reply-To: <1422294449-12735-1-git-send-email-acme@kernel.org>
From: Arnaldo Carvalho de Melo <acme@redhat.com>
As this is not specific to an evlist and may be used with other tools.
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-a9up9mivx1pzdf5tqrqsx62d@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/include/asm/hash.h
---
tools/lib/api/fs/debugfs.c | 27 +++++++++++++++++++++++++++
tools/lib/api/fs/debugfs.h | 2 ++
tools/perf/builtin-trace.c | 11 +++++++++--
tools/perf/util/evlist.c | 27 ---------------------------
tools/perf/util/evlist.h | 1 -
5 files changed, 38 insertions(+), 30 deletions(-)
diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c
index 86ea2d7b8845..fb700eed61c2 100644
--- a/tools/lib/api/fs/debugfs.c
+++ b/tools/lib/api/fs/debugfs.c
@@ -1,3 +1,4 @@
+#define _GNU_SOURCE
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@@ -98,3 +99,29 @@ char *debugfs_mount(const char *mountpoint)
out:
return debugfs_mountpoint;
}
+
+int debugfs__strerror_open(int err, char *buf, size_t size)
+{
+ char sbuf[128];
+
+ switch (err) {
+ case ENOENT:
+ snprintf(buf, size, "%s",
+ "Error:\tUnable to find debugfs\n"
+ "Hint:\tWas your kernel compiled with debugfs support?\n"
+ "Hint:\tIs the debugfs filesystem mounted?\n"
+ "Hint:\tTry 'sudo mount -t debugfs nodev /sys/kernel/debug'");
+ break;
+ case EACCES:
+ snprintf(buf, size,
+ "Error:\tNo permissions to read %s/tracing/events/raw_syscalls\n"
+ "Hint:\tTry 'sudo mount -o remount,mode=755 %s'\n",
+ debugfs_mountpoint, debugfs_mountpoint);
+ break;
+ default:
+ snprintf(buf, size, "%s", strerror_r(err, sbuf, sizeof(sbuf)));
+ break;
+ }
+
+ return 0;
+}
diff --git a/tools/lib/api/fs/debugfs.h b/tools/lib/api/fs/debugfs.h
index f19d3df9609d..afa5043fec61 100644
--- a/tools/lib/api/fs/debugfs.h
+++ b/tools/lib/api/fs/debugfs.h
@@ -26,4 +26,6 @@ char *debugfs_mount(const char *mountpoint);
extern char debugfs_mountpoint[];
+int debugfs__strerror_open(int err, char *buf, size_t size);
+
#endif /* __API_DEBUGFS_H__ */
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index 258f6550c736..2f82dd78b086 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -2062,8 +2062,15 @@ static int trace__run(struct trace *trace, int argc, const char **argv)
perf_evlist__add_vfs_getname(evlist);
if ((trace->trace_pgfaults & TRACE_PFMAJ) &&
- perf_evlist__add_pgfault(evlist, PERF_COUNT_SW_PAGE_FAULTS_MAJ))
+ perf_evlist__add_pgfault(evlist, PERF_COUNT_SW_PAGE_FAULTS_MAJ)) {
+ /*
+ * FIXME: This one needs better error handling, as by now we
+ * already checked that debugfs is mounted and that we have access to it,
+ * so probably the case is that something is busted wrt this specific
+ * software event, ditto for the next gotos to out_error_tp...
+ */
goto out_error_tp;
+ }
if ((trace->trace_pgfaults & TRACE_PFMIN) &&
perf_evlist__add_pgfault(evlist, PERF_COUNT_SW_PAGE_FAULTS_MIN))
@@ -2203,7 +2210,7 @@ out:
char errbuf[BUFSIZ];
out_error_tp:
- perf_evlist__strerror_tp(evlist, errno, errbuf, sizeof(errbuf));
+ debugfs__strerror_open(errno, errbuf, sizeof(errbuf));
goto out_error;
out_error_mmap:
diff --git a/tools/perf/util/evlist.c b/tools/perf/util/evlist.c
index 2e507b5025a3..28b8ce86bf12 100644
--- a/tools/perf/util/evlist.c
+++ b/tools/perf/util/evlist.c
@@ -1436,33 +1436,6 @@ size_t perf_evlist__fprintf(struct perf_evlist *evlist, FILE *fp)
return printed + fprintf(fp, "\n");
}
-int perf_evlist__strerror_tp(struct perf_evlist *evlist __maybe_unused,
- int err, char *buf, size_t size)
-{
- char sbuf[128];
-
- switch (err) {
- case ENOENT:
- scnprintf(buf, size, "%s",
- "Error:\tUnable to find debugfs\n"
- "Hint:\tWas your kernel compiled with debugfs support?\n"
- "Hint:\tIs the debugfs filesystem mounted?\n"
- "Hint:\tTry 'sudo mount -t debugfs nodev /sys/kernel/debug'");
- break;
- case EACCES:
- scnprintf(buf, size,
- "Error:\tNo permissions to read %s/tracing/events/raw_syscalls\n"
- "Hint:\tTry 'sudo mount -o remount,mode=755 %s'\n",
- debugfs_mountpoint, debugfs_mountpoint);
- break;
- default:
- scnprintf(buf, size, "%s", strerror_r(err, sbuf, sizeof(sbuf)));
- break;
- }
-
- return 0;
-}
-
int perf_evlist__strerror_open(struct perf_evlist *evlist __maybe_unused,
int err, char *buf, size_t size)
{
diff --git a/tools/perf/util/evlist.h b/tools/perf/util/evlist.h
index 0ba93f67ab94..c94a9e03ecf1 100644
--- a/tools/perf/util/evlist.h
+++ b/tools/perf/util/evlist.h
@@ -183,7 +183,6 @@ static inline struct perf_evsel *perf_evlist__last(struct perf_evlist *evlist)
size_t perf_evlist__fprintf(struct perf_evlist *evlist, FILE *fp);
-int perf_evlist__strerror_tp(struct perf_evlist *evlist, int err, char *buf, size_t size);
int perf_evlist__strerror_open(struct perf_evlist *evlist, int err, char *buf, size_t size);
int perf_evlist__strerror_mmap(struct perf_evlist *evlist, int err, char *buf, size_t size);
--
1.9.3
next prev parent reply other threads:[~2015-01-26 17:51 UTC|newest]
Thread overview: 36+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-26 17:47 [GIT PULL 00/26] perf/core improvements and fixes Arnaldo Carvalho de Melo
2015-01-26 17:47 ` Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 01/26] perf mem: Enable sampling loads and stores simultaneously Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 02/26] perf mem: Move the mem_operations global to struct perf_mem Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 03/26] perf tools: Remove EOL whitespaces Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 04/26] perf hists: Rename hist_entry__free to __delete Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 05/26] perf hists: Introduce function for deleting/removing hist_entry Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 06/26] perf report: Get rid of report__inc_stat() Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 07/26] perf tools: Remove some unused functions from color.c Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 08/26] perf tools: Support parsing parameterized events Arnaldo Carvalho de Melo
2015-01-26 17:47 ` Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 09/26] perf tools: Extend format_alias() to include event parameters Arnaldo Carvalho de Melo
2015-01-26 17:47 ` Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 10/26] perf Documentation: Add " Arnaldo Carvalho de Melo
2015-01-26 17:47 ` Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 11/26] perf tools: Document parameterized and symbolic events Arnaldo Carvalho de Melo
2015-01-26 17:47 ` Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 12/26] perf tools: Allow use of an exclusive option more than once Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 13/26] perf diff: Get rid of hists__compute_resort() Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 14/26] perf diff: Print diff result more precisely Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 15/26] perf diff: Introduce fmt_to_data_file() helper Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 16/26] perf tools: Pass struct perf_hpp_fmt to its callbacks Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 17/26] perf diff: Fix output ordering to honor next column Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 18/26] perf diff: Fix -o/--order option behavior Arnaldo Carvalho de Melo
2015-01-26 17:47 ` Arnaldo Carvalho de Melo [this message]
2015-01-26 17:47 ` [PATCH 20/26] tools lib fs: Pass filename to debugfs__strerror_open Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 21/26] perf trace: Fix error reporting for evsel pgfault constructor Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 22/26] tools lib fs debugfs: Introduce debugfs__strerror_open_tp Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 23/26] tools lib fs debugfs: Check if debugfs is mounted when handling ENOENT Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 24/26] perf tests: Fix typo in sample-parsing.c Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 25/26] perf ui/tui: Show fatal error message only if exists Arnaldo Carvalho de Melo
2015-01-26 17:47 ` [PATCH 26/26] tools lib traceevent: Add support for IP address formats Arnaldo Carvalho de Melo
2015-01-28 14:50 ` [GIT PULL 00/26] perf/core improvements and fixes Ingo Molnar
2015-01-28 14:50 ` Ingo Molnar
2015-01-28 14:55 ` Arnaldo Carvalho de Melo
2015-01-28 14:55 ` Arnaldo Carvalho de Melo
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=1422294449-12735-20-git-send-email-acme@kernel.org \
--to=acme@kernel.org \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=bp@suse.de \
--cc=dsahern@gmail.com \
--cc=dzickus@redhat.com \
--cc=eranian@google.com \
--cc=fweisbec@gmail.com \
--cc=jolsa@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
/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.