diff options
Diffstat (limited to 'tools/lib/api')
| -rw-r--r-- | tools/lib/api/fs/debugfs.c | 4 | ||||
| -rw-r--r-- | tools/lib/api/fs/fs.c | 43 | 
2 files changed, 44 insertions, 3 deletions
diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c index 7c4347962353..a74fba6d7743 100644 --- a/tools/lib/api/fs/debugfs.c +++ b/tools/lib/api/fs/debugfs.c @@ -12,8 +12,8 @@  char debugfs_mountpoint[PATH_MAX + 1] = "/sys/kernel/debug";  static const char * const debugfs_known_mountpoints[] = { -	"/sys/kernel/debug/", -	"/debug/", +	"/sys/kernel/debug", +	"/debug",  	0,  }; diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c index 5b5eb788996e..c1b49c36a951 100644 --- a/tools/lib/api/fs/fs.c +++ b/tools/lib/api/fs/fs.c @@ -1,8 +1,10 @@  /* TODO merge/factor in debugfs.c here */ +#include <ctype.h>  #include <errno.h>  #include <stdbool.h>  #include <stdio.h> +#include <stdlib.h>  #include <string.h>  #include <sys/vfs.h> @@ -96,12 +98,51 @@ static bool fs__check_mounts(struct fs *fs)  	return false;  } +static void mem_toupper(char *f, size_t len) +{ +	while (len) { +		*f = toupper(*f); +		f++; +		len--; +	} +} + +/* + * Check for "NAME_PATH" environment variable to override fs location (for + * testing). This matches the recommendation in Documentation/sysfs-rules.txt + * for SYSFS_PATH. + */ +static bool fs__env_override(struct fs *fs) +{ +	char *override_path; +	size_t name_len = strlen(fs->name); +	/* name + "_PATH" + '\0' */ +	char upper_name[name_len + 5 + 1]; +	memcpy(upper_name, fs->name, name_len); +	mem_toupper(upper_name, name_len); +	strcpy(&upper_name[name_len], "_PATH"); + +	override_path = getenv(upper_name); +	if (!override_path) +		return false; + +	fs->found = true; +	strncpy(fs->path, override_path, sizeof(fs->path)); +	return true; +} +  static const char *fs__get_mountpoint(struct fs *fs)  { +	if (fs__env_override(fs)) +		return fs->path; +  	if (fs__check_mounts(fs))  		return fs->path; -	return fs__read_mounts(fs) ? fs->path : NULL; +	if (fs__read_mounts(fs)) +		return fs->path; + +	return NULL;  }  static const char *fs__mountpoint(int idx)  |