lkml.org 
[lkml]   [2015]   [Sep]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 05/15] tools lib api: Move debugfs__strerror_open into tracing_path.c object
    Date
    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.

    Link: http://lkml.kernel.org/n/tip-bq0f0l4r0bjvy0pjp4m759kv@git.kernel.org
    Signed-off-by: Jiri Olsa <jolsa@kernel.org>
    ---
    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 eb7cf4d18f8a..c707cfb32782 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 1fd6e1f99234..3b3e4f5fc50b 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 b132dc599fe5..3f233ac70b6f 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 4e3abba03062..215653274102 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:
    --
    2.4.3


    \
     
     \ /
      Last update: 2015-09-02 10:21    [W:3.304 / U:0.572 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site