diff options
| author | Mark Brown <broonie@kernel.org> | 2015-03-10 10:37:02 +0000 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2015-03-10 10:37:02 +0000 |
| commit | eb5bc2a213f96bd43b5f00a625acb0c669613645 (patch) | |
| tree | 6093a86c9e704ebfed54adb426ff3079a428da93 /tools/lib/api/fs/debugfs.c | |
| parent | 485372dc24ca2eaac18ce41a51b9dd017bc11400 (diff) | |
| parent | 9eccca0843205f87c00404b663188b88eb248051 (diff) | |
| download | linux-eb5bc2a213f96bd43b5f00a625acb0c669613645.tar.gz linux-eb5bc2a213f96bd43b5f00a625acb0c669613645.zip | |
Merge tag 'v4.0-rc3' into asoc-rt5670
Linux 4.0-rc3
Conflicts:
sound/soc/codecs/rt5670.c
Diffstat (limited to 'tools/lib/api/fs/debugfs.c')
| -rw-r--r-- | tools/lib/api/fs/debugfs.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c index 86ea2d7b8845..d2b18e887071 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,45 @@ 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: + snprintf(buf, size, + "Error:\tNo permissions to read %s/%s\n" + "Hint:\tTry 'sudo mount -o remount,mode=755 %s'\n", + debugfs_mountpoint, filename, debugfs_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); +} |
