lkml.org 
[lkml]   [2015]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[tip:perf/core] tools lib api fs: Move debugfs__strerror_open into tracing_path.c object
    Commit-ID:  988bdb319246dea977a375beee39a5452e99b3ef
    Gitweb: http://git.kernel.org/tip/988bdb319246dea977a375beee39a5452e99b3ef
    Author: Jiri Olsa <jolsa@kernel.org>
    AuthorDate: Wed, 2 Sep 2015 09:56:35 +0200
    Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
    CommitDate: Fri, 4 Sep 2015 12:00:58 -0300

    tools lib api fs: Move debugfs__strerror_open into tracing_path.c object

    Moving debugfs__strerror_open out of api/fs/debugfs.c, because it's not
    debugfs specific. It'll be changed to consider tracefs mount as well in
    following patches.

    Renaming it into tracing_path__strerror_open_tp to fit into the
    namespace. No functional change is intended.

    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    Reviewed-by: Matt Fleming <matt.fleming@intel.com>
    Cc: Raphael Beamonte <raphael.beamonte@gmail.com>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Link: http://lkml.kernel.org/r/1441180605-24737-6-git-send-email-jolsa@kernel.org
    Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
    ---
    tools/lib/api/fs/debugfs.c | 52 ---------------------------------------
    tools/lib/api/fs/tracing_path.c | 54 +++++++++++++++++++++++++++++++++++++++++
    tools/lib/api/fs/tracing_path.h | 3 +++
    tools/perf/builtin-trace.c | 5 ++--
    4 files changed, 60 insertions(+), 54 deletions(-)

    diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c
    index eb7cf4d..c707cfb 100644
    --- a/tools/lib/api/fs/debugfs.c
    +++ b/tools/lib/api/fs/debugfs.c
    @@ -75,55 +75,3 @@ char *debugfs_mount(const char *mountpoint)
    out:
    return debugfs_mountpoint;
    }
    -
    -int debugfs__strerror_open(int err, char *buf, size_t size, const char *filename)
    -{
    - char sbuf[128];
    -
    - switch (err) {
    - case ENOENT:
    - if (debugfs_found) {
    - snprintf(buf, size,
    - "Error:\tFile %s/%s not found.\n"
    - "Hint:\tPerhaps this kernel misses some CONFIG_ setting to enable this feature?.\n",
    - debugfs_mountpoint, filename);
    - break;
    - }
    - 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: {
    - const char *mountpoint = debugfs_mountpoint;
    -
    - if (!access(debugfs_mountpoint, R_OK) && strncmp(filename, "tracing/", 8) == 0) {
    - const char *tracefs_mntpoint = tracefs_find_mountpoint();
    -
    - if (tracefs_mntpoint)
    - mountpoint = tracefs_mntpoint;
    - }
    -
    - snprintf(buf, size,
    - "Error:\tNo permissions to read %s/%s\n"
    - "Hint:\tTry 'sudo mount -o remount,mode=755 %s'\n",
    - debugfs_mountpoint, filename, mountpoint);
    - }
    - break;
    - default:
    - snprintf(buf, size, "%s", strerror_r(err, sbuf, sizeof(sbuf)));
    - break;
    - }
    -
    - return 0;
    -}
    -
    -int debugfs__strerror_open_tp(int err, char *buf, size_t size, const char *sys, const char *name)
    -{
    - char path[PATH_MAX];
    -
    - snprintf(path, PATH_MAX, "tracing/events/%s/%s", sys, name ?: "*");
    -
    - return debugfs__strerror_open(err, buf, size, path);
    -}
    diff --git a/tools/lib/api/fs/tracing_path.c b/tools/lib/api/fs/tracing_path.c
    index 1fd6e1f..3b3e4f5 100644
    --- a/tools/lib/api/fs/tracing_path.c
    +++ b/tools/lib/api/fs/tracing_path.c
    @@ -5,6 +5,8 @@
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    +#include <errno.h>
    +#include <unistd.h>
    #include "debugfs.h"
    #include "tracefs.h"

    @@ -81,3 +83,55 @@ void put_tracing_file(char *file)
    {
    free(file);
    }
    +
    +static int strerror_open(int err, char *buf, size_t size, const char *filename)
    +{
    + char sbuf[128];
    +
    + switch (err) {
    + case ENOENT:
    + if (debugfs_configured()) {
    + snprintf(buf, size,
    + "Error:\tFile %s/%s not found.\n"
    + "Hint:\tPerhaps this kernel misses some CONFIG_ setting to enable this feature?.\n",
    + debugfs_mountpoint, filename);
    + break;
    + }
    + 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: {
    + const char *mountpoint = debugfs_mountpoint;
    +
    + if (!access(debugfs_mountpoint, R_OK) && strncmp(filename, "tracing/", 8) == 0) {
    + const char *tracefs_mntpoint = tracefs_find_mountpoint();
    +
    + if (tracefs_mntpoint)
    + mountpoint = tracefs_mntpoint;
    + }
    +
    + snprintf(buf, size,
    + "Error:\tNo permissions to read %s/%s\n"
    + "Hint:\tTry 'sudo mount -o remount,mode=755 %s'\n",
    + debugfs_mountpoint, filename, mountpoint);
    + }
    + break;
    + default:
    + snprintf(buf, size, "%s", strerror_r(err, sbuf, sizeof(sbuf)));
    + break;
    + }
    +
    + return 0;
    +}
    +
    +int tracing_path__strerror_open_tp(int err, char *buf, size_t size, const char *sys, const char *name)
    +{
    + char path[PATH_MAX];
    +
    + snprintf(path, PATH_MAX, "tracing/events/%s/%s", sys, name ?: "*");
    +
    + return strerror_open(err, buf, size, path);
    +}
    diff --git a/tools/lib/api/fs/tracing_path.h b/tools/lib/api/fs/tracing_path.h
    index b132dc5..3f233ac 100644
    --- a/tools/lib/api/fs/tracing_path.h
    +++ b/tools/lib/api/fs/tracing_path.h
    @@ -1,6 +1,8 @@
    #ifndef __API_FS_TRACING_PATH_H
    #define __API_FS_TRACING_PATH_H

    +#include <linux/types.h>
    +
    extern char tracing_path[];
    extern char tracing_events_path[];

    @@ -10,4 +12,5 @@ const char *tracing_path_mount(void);
    char *get_tracing_file(const char *name);
    void put_tracing_file(char *file);

    +int tracing_path__strerror_open_tp(int err, char *buf, size_t size, const char *sys, const char *name);
    #endif /* __API_FS_TRACING_PATH_H */
    diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
    index 4e3abba..2156532 100644
    --- a/tools/perf/builtin-trace.c
    +++ b/tools/perf/builtin-trace.c
    @@ -17,6 +17,7 @@
    */

    #include <traceevent/event-parse.h>
    +#include <api/fs/tracing_path.h>
    #include "builtin.h"
    #include "util/color.h"
    #include "util/debug.h"
    @@ -2686,11 +2687,11 @@ out_delete_evlist:
    char errbuf[BUFSIZ];

    out_error_sched_stat_runtime:
    - debugfs__strerror_open_tp(errno, errbuf, sizeof(errbuf), "sched", "sched_stat_runtime");
    + tracing_path__strerror_open_tp(errno, errbuf, sizeof(errbuf), "sched", "sched_stat_runtime");
    goto out_error;

    out_error_raw_syscalls:
    - debugfs__strerror_open_tp(errno, errbuf, sizeof(errbuf), "raw_syscalls", "sys_(enter|exit)");
    + tracing_path__strerror_open_tp(errno, errbuf, sizeof(errbuf), "raw_syscalls", "sys_(enter|exit)");
    goto out_error;

    out_error_mmap:

    \
     
     \ /
      Last update: 2015-09-08 17:01    [W:4.299 / U:0.052 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site