diff options
Diffstat (limited to 'tools/lib/api/fs')
| -rw-r--r-- | tools/lib/api/fs/Build | 4 | ||||
| -rw-r--r-- | tools/lib/api/fs/debugfs.c | 129 | ||||
| -rw-r--r-- | tools/lib/api/fs/debugfs.h | 23 | ||||
| -rw-r--r-- | tools/lib/api/fs/findfs.c | 63 | ||||
| -rw-r--r-- | tools/lib/api/fs/findfs.h | 23 | ||||
| -rw-r--r-- | tools/lib/api/fs/fs.c | 165 | ||||
| -rw-r--r-- | tools/lib/api/fs/fs.h | 30 | ||||
| -rw-r--r-- | tools/lib/api/fs/tracefs.c | 78 | ||||
| -rw-r--r-- | tools/lib/api/fs/tracefs.h | 21 | ||||
| -rw-r--r-- | tools/lib/api/fs/tracing_path.c | 135 | ||||
| -rw-r--r-- | tools/lib/api/fs/tracing_path.h | 16 | 
11 files changed, 328 insertions, 359 deletions
| diff --git a/tools/lib/api/fs/Build b/tools/lib/api/fs/Build index 6de5a4f0b501..f4ed9629ae85 100644 --- a/tools/lib/api/fs/Build +++ b/tools/lib/api/fs/Build @@ -1,4 +1,2 @@  libapi-y += fs.o -libapi-y += debugfs.o -libapi-y += findfs.o -libapi-y += tracefs.o +libapi-y += tracing_path.o diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c deleted file mode 100644 index eb7cf4d18f8a..000000000000 --- a/tools/lib/api/fs/debugfs.c +++ /dev/null @@ -1,129 +0,0 @@ -#define _GNU_SOURCE -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <stdbool.h> -#include <sys/vfs.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/mount.h> -#include <linux/kernel.h> - -#include "debugfs.h" -#include "tracefs.h" - -#ifndef DEBUGFS_DEFAULT_PATH -#define DEBUGFS_DEFAULT_PATH		"/sys/kernel/debug" -#endif - -char debugfs_mountpoint[PATH_MAX + 1] = DEBUGFS_DEFAULT_PATH; - -static const char * const debugfs_known_mountpoints[] = { -	DEBUGFS_DEFAULT_PATH, -	"/debug", -	0, -}; - -static bool debugfs_found; - -bool debugfs_configured(void) -{ -	return debugfs_find_mountpoint() != NULL; -} - -/* find the path to the mounted debugfs */ -const char *debugfs_find_mountpoint(void) -{ -	const char *ret; - -	if (debugfs_found) -		return (const char *)debugfs_mountpoint; - -	ret = find_mountpoint("debugfs", (long) DEBUGFS_MAGIC, -			      debugfs_mountpoint, PATH_MAX + 1, -			      debugfs_known_mountpoints); -	if (ret) -		debugfs_found = true; - -	return ret; -} - -/* mount the debugfs somewhere if it's not mounted */ -char *debugfs_mount(const char *mountpoint) -{ -	/* see if it's already mounted */ -	if (debugfs_find_mountpoint()) -		goto out; - -	/* if not mounted and no argument */ -	if (mountpoint == NULL) { -		/* see if environment variable set */ -		mountpoint = getenv(PERF_DEBUGFS_ENVIRONMENT); -		/* if no environment variable, use default */ -		if (mountpoint == NULL) -			mountpoint = DEBUGFS_DEFAULT_PATH; -	} - -	if (mount(NULL, mountpoint, "debugfs", 0, NULL) < 0) -		return NULL; - -	/* save the mountpoint */ -	debugfs_found = true; -	strncpy(debugfs_mountpoint, mountpoint, sizeof(debugfs_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/debugfs.h b/tools/lib/api/fs/debugfs.h deleted file mode 100644 index 455023698d2b..000000000000 --- a/tools/lib/api/fs/debugfs.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef __API_DEBUGFS_H__ -#define __API_DEBUGFS_H__ - -#include "findfs.h" - -#ifndef DEBUGFS_MAGIC -#define DEBUGFS_MAGIC          0x64626720 -#endif - -#ifndef PERF_DEBUGFS_ENVIRONMENT -#define PERF_DEBUGFS_ENVIRONMENT "PERF_DEBUGFS_DIR" -#endif - -bool debugfs_configured(void); -const char *debugfs_find_mountpoint(void); -char *debugfs_mount(const char *mountpoint); - -extern char debugfs_mountpoint[]; - -int debugfs__strerror_open(int err, char *buf, size_t size, const char *filename); -int debugfs__strerror_open_tp(int err, char *buf, size_t size, const char *sys, const char *name); - -#endif /* __API_DEBUGFS_H__ */ diff --git a/tools/lib/api/fs/findfs.c b/tools/lib/api/fs/findfs.c deleted file mode 100644 index 49946cb6d7af..000000000000 --- a/tools/lib/api/fs/findfs.c +++ /dev/null @@ -1,63 +0,0 @@ -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <stdbool.h> -#include <sys/vfs.h> - -#include "findfs.h" - -/* verify that a mountpoint is actually the type we want */ - -int valid_mountpoint(const char *mount, long magic) -{ -	struct statfs st_fs; - -	if (statfs(mount, &st_fs) < 0) -		return -ENOENT; -	else if ((long)st_fs.f_type != magic) -		return -ENOENT; - -	return 0; -} - -/* find the path to a mounted file system */ -const char *find_mountpoint(const char *fstype, long magic, -			    char *mountpoint, int len, -			    const char * const *known_mountpoints) -{ -	const char * const *ptr; -	char format[128]; -	char type[100]; -	FILE *fp; - -	if (known_mountpoints) { -		ptr = known_mountpoints; -		while (*ptr) { -			if (valid_mountpoint(*ptr, magic) == 0) { -				strncpy(mountpoint, *ptr, len - 1); -				mountpoint[len-1] = 0; -				return mountpoint; -			} -			ptr++; -		} -	} - -	/* give up and parse /proc/mounts */ -	fp = fopen("/proc/mounts", "r"); -	if (fp == NULL) -		return NULL; - -	snprintf(format, 128, "%%*s %%%ds %%99s %%*s %%*d %%*d\n", len); - -	while (fscanf(fp, format, mountpoint, type) == 2) { -		if (strcmp(type, fstype) == 0) -			break; -	} -	fclose(fp); - -	if (strcmp(type, fstype) != 0) -		return NULL; - -	return mountpoint; -} diff --git a/tools/lib/api/fs/findfs.h b/tools/lib/api/fs/findfs.h deleted file mode 100644 index b6f5d05acc42..000000000000 --- a/tools/lib/api/fs/findfs.h +++ /dev/null @@ -1,23 +0,0 @@ -#ifndef __API_FINDFS_H__ -#define __API_FINDFS_H__ - -#include <stdbool.h> - -#define _STR(x) #x -#define STR(x) _STR(x) - -/* - * On most systems <limits.h> would have given us this, but  not on some systems - * (e.g. GNU/Hurd). - */ -#ifndef PATH_MAX -#define PATH_MAX 4096 -#endif - -const char *find_mountpoint(const char *fstype, long magic, -			    char *mountpoint, int len, -			    const char * const *known_mountpoints); - -int valid_mountpoint(const char *mount, long magic); - -#endif /* __API_FINDFS_H__ */ diff --git a/tools/lib/api/fs/fs.c b/tools/lib/api/fs/fs.c index 128ef6332a6b..459599d1b6c4 100644 --- a/tools/lib/api/fs/fs.c +++ b/tools/lib/api/fs/fs.c @@ -1,7 +1,6 @@ -/* TODO merge/factor in debugfs.c here */ -  #include <ctype.h>  #include <errno.h> +#include <limits.h>  #include <stdbool.h>  #include <stdio.h>  #include <stdlib.h> @@ -11,10 +10,29 @@  #include <sys/stat.h>  #include <fcntl.h>  #include <unistd.h> +#include <sys/mount.h> -#include "debugfs.h"  #include "fs.h" +#define _STR(x) #x +#define STR(x) _STR(x) + +#ifndef SYSFS_MAGIC +#define SYSFS_MAGIC            0x62656572 +#endif + +#ifndef PROC_SUPER_MAGIC +#define PROC_SUPER_MAGIC       0x9fa0 +#endif + +#ifndef DEBUGFS_MAGIC +#define DEBUGFS_MAGIC          0x64626720 +#endif + +#ifndef TRACEFS_MAGIC +#define TRACEFS_MAGIC          0x74726163 +#endif +  static const char * const sysfs__fs_known_mountpoints[] = {  	"/sys",  	0, @@ -25,19 +43,48 @@ static const char * const procfs__known_mountpoints[] = {  	0,  }; +#ifndef DEBUGFS_DEFAULT_PATH +#define DEBUGFS_DEFAULT_PATH "/sys/kernel/debug" +#endif + +static const char * const debugfs__known_mountpoints[] = { +	DEBUGFS_DEFAULT_PATH, +	"/debug", +	0, +}; + + +#ifndef TRACEFS_DEFAULT_PATH +#define TRACEFS_DEFAULT_PATH "/sys/kernel/tracing" +#endif + +static const char * const tracefs__known_mountpoints[] = { +	TRACEFS_DEFAULT_PATH, +	"/sys/kernel/debug/tracing", +	"/tracing", +	"/trace", +	0, +}; +  struct fs {  	const char		*name;  	const char * const	*mounts; -	char			 path[PATH_MAX + 1]; +	char			 path[PATH_MAX];  	bool			 found;  	long			 magic;  };  enum { -	FS__SYSFS  = 0, -	FS__PROCFS = 1, +	FS__SYSFS   = 0, +	FS__PROCFS  = 1, +	FS__DEBUGFS = 2, +	FS__TRACEFS = 3,  }; +#ifndef TRACEFS_MAGIC +#define TRACEFS_MAGIC 0x74726163 +#endif +  static struct fs fs__entries[] = {  	[FS__SYSFS] = {  		.name	= "sysfs", @@ -49,6 +96,16 @@ static struct fs fs__entries[] = {  		.mounts	= procfs__known_mountpoints,  		.magic	= PROC_SUPER_MAGIC,  	}, +	[FS__DEBUGFS] = { +		.name	= "debugfs", +		.mounts	= debugfs__known_mountpoints, +		.magic	= DEBUGFS_MAGIC, +	}, +	[FS__TRACEFS] = { +		.name	= "tracefs", +		.mounts	= tracefs__known_mountpoints, +		.magic	= TRACEFS_MAGIC, +	},  };  static bool fs__read_mounts(struct fs *fs) @@ -159,14 +216,54 @@ static const char *fs__mountpoint(int idx)  	return fs__get_mountpoint(fs);  } -#define FS__MOUNTPOINT(name, idx)	\ -const char *name##__mountpoint(void)	\ -{					\ -	return fs__mountpoint(idx);	\ +static const char *mount_overload(struct fs *fs) +{ +	size_t name_len = strlen(fs->name); +	/* "PERF_" + name + "_ENVIRONMENT" + '\0' */ +	char upper_name[5 + name_len + 12 + 1]; + +	snprintf(upper_name, name_len, "PERF_%s_ENVIRONMENT", fs->name); +	mem_toupper(upper_name, name_len); + +	return getenv(upper_name) ?: *fs->mounts; +} + +static const char *fs__mount(int idx) +{ +	struct fs *fs = &fs__entries[idx]; +	const char *mountpoint; + +	if (fs__mountpoint(idx)) +		return (const char *)fs->path; + +	mountpoint = mount_overload(fs); + +	if (mount(NULL, mountpoint, fs->name, 0, NULL) < 0) +		return NULL; + +	return fs__check_mounts(fs) ? fs->path : NULL; +} + +#define FS(name, idx)				\ +const char *name##__mountpoint(void)		\ +{						\ +	return fs__mountpoint(idx);		\ +}						\ +						\ +const char *name##__mount(void)			\ +{						\ +	return fs__mount(idx);			\ +}						\ +						\ +bool name##__configured(void)			\ +{						\ +	return name##__mountpoint() != NULL;	\  } -FS__MOUNTPOINT(sysfs,  FS__SYSFS); -FS__MOUNTPOINT(procfs, FS__PROCFS); +FS(sysfs,   FS__SYSFS); +FS(procfs,  FS__PROCFS); +FS(debugfs, FS__DEBUGFS); +FS(tracefs, FS__TRACEFS);  int filename__read_int(const char *filename, int *value)  { @@ -185,6 +282,50 @@ int filename__read_int(const char *filename, int *value)  	return err;  } +int filename__read_ull(const char *filename, unsigned long long *value) +{ +	char line[64]; +	int fd = open(filename, O_RDONLY), err = -1; + +	if (fd < 0) +		return -1; + +	if (read(fd, line, sizeof(line)) > 0) { +		*value = strtoull(line, NULL, 10); +		if (*value != ULLONG_MAX) +			err = 0; +	} + +	close(fd); +	return err; +} + +int sysfs__read_ull(const char *entry, unsigned long long *value) +{ +	char path[PATH_MAX]; +	const char *sysfs = sysfs__mountpoint(); + +	if (!sysfs) +		return -1; + +	snprintf(path, sizeof(path), "%s/%s", sysfs, entry); + +	return filename__read_ull(path, value); +} + +int sysfs__read_int(const char *entry, int *value) +{ +	char path[PATH_MAX]; +	const char *sysfs = sysfs__mountpoint(); + +	if (!sysfs) +		return -1; + +	snprintf(path, sizeof(path), "%s/%s", sysfs, entry); + +	return filename__read_int(path, value); +} +  int sysctl__read_int(const char *sysctl, int *value)  {  	char path[PATH_MAX]; diff --git a/tools/lib/api/fs/fs.h b/tools/lib/api/fs/fs.h index 6caa2bbc6cec..d024a7f682f6 100644 --- a/tools/lib/api/fs/fs.h +++ b/tools/lib/api/fs/fs.h @@ -1,17 +1,33 @@  #ifndef __API_FS__  #define __API_FS__ -#ifndef SYSFS_MAGIC -#define SYSFS_MAGIC            0x62656572 -#endif +#include <stdbool.h> -#ifndef PROC_SUPER_MAGIC -#define PROC_SUPER_MAGIC       0x9fa0 +/* + * On most systems <limits.h> would have given us this, but  not on some systems + * (e.g. GNU/Hurd). + */ +#ifndef PATH_MAX +#define PATH_MAX 4096  #endif -const char *sysfs__mountpoint(void); -const char *procfs__mountpoint(void); +#define FS(name)				\ +	const char *name##__mountpoint(void);	\ +	const char *name##__mount(void);	\ +	bool name##__configured(void);		\ + +FS(sysfs) +FS(procfs) +FS(debugfs) +FS(tracefs) + +#undef FS +  int filename__read_int(const char *filename, int *value); +int filename__read_ull(const char *filename, unsigned long long *value); +  int sysctl__read_int(const char *sysctl, int *value); +int sysfs__read_int(const char *entry, int *value); +int sysfs__read_ull(const char *entry, unsigned long long *value);  #endif /* __API_FS__ */ diff --git a/tools/lib/api/fs/tracefs.c b/tools/lib/api/fs/tracefs.c deleted file mode 100644 index e4aa9688b71e..000000000000 --- a/tools/lib/api/fs/tracefs.c +++ /dev/null @@ -1,78 +0,0 @@ -#include <errno.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <unistd.h> -#include <stdbool.h> -#include <sys/vfs.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <sys/mount.h> -#include <linux/kernel.h> - -#include "tracefs.h" - -#ifndef TRACEFS_DEFAULT_PATH -#define TRACEFS_DEFAULT_PATH		"/sys/kernel/tracing" -#endif - -char tracefs_mountpoint[PATH_MAX + 1] = TRACEFS_DEFAULT_PATH; - -static const char * const tracefs_known_mountpoints[] = { -	TRACEFS_DEFAULT_PATH, -	"/sys/kernel/debug/tracing", -	"/tracing", -	"/trace", -	0, -}; - -static bool tracefs_found; - -bool tracefs_configured(void) -{ -	return tracefs_find_mountpoint() != NULL; -} - -/* find the path to the mounted tracefs */ -const char *tracefs_find_mountpoint(void) -{ -	const char *ret; - -	if (tracefs_found) -		return (const char *)tracefs_mountpoint; - -	ret = find_mountpoint("tracefs", (long) TRACEFS_MAGIC, -			      tracefs_mountpoint, PATH_MAX + 1, -			      tracefs_known_mountpoints); - -	if (ret) -		tracefs_found = true; - -	return ret; -} - -/* mount the tracefs somewhere if it's not mounted */ -char *tracefs_mount(const char *mountpoint) -{ -	/* see if it's already mounted */ -	if (tracefs_find_mountpoint()) -		goto out; - -	/* if not mounted and no argument */ -	if (mountpoint == NULL) { -		/* see if environment variable set */ -		mountpoint = getenv(PERF_TRACEFS_ENVIRONMENT); -		/* if no environment variable, use default */ -		if (mountpoint == NULL) -			mountpoint = TRACEFS_DEFAULT_PATH; -	} - -	if (mount(NULL, mountpoint, "tracefs", 0, NULL) < 0) -		return NULL; - -	/* save the mountpoint */ -	tracefs_found = true; -	strncpy(tracefs_mountpoint, mountpoint, sizeof(tracefs_mountpoint)); -out: -	return tracefs_mountpoint; -} diff --git a/tools/lib/api/fs/tracefs.h b/tools/lib/api/fs/tracefs.h deleted file mode 100644 index da780ac49acb..000000000000 --- a/tools/lib/api/fs/tracefs.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __API_TRACEFS_H__ -#define __API_TRACEFS_H__ - -#include "findfs.h" - -#ifndef TRACEFS_MAGIC -#define TRACEFS_MAGIC          0x74726163 -#endif - -#ifndef PERF_TRACEFS_ENVIRONMENT -#define PERF_TRACEFS_ENVIRONMENT "PERF_TRACEFS_DIR" -#endif - -bool tracefs_configured(void); -const char *tracefs_find_mountpoint(void); -int tracefs_valid_mountpoint(const char *debugfs); -char *tracefs_mount(const char *mountpoint); - -extern char tracefs_mountpoint[]; - -#endif /* __API_DEBUGFS_H__ */ diff --git a/tools/lib/api/fs/tracing_path.c b/tools/lib/api/fs/tracing_path.c new file mode 100644 index 000000000000..a26bb5ea8283 --- /dev/null +++ b/tools/lib/api/fs/tracing_path.c @@ -0,0 +1,135 @@ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <unistd.h> +#include "fs.h" + +#include "tracing_path.h" + + +char tracing_mnt[PATH_MAX]         = "/sys/kernel/debug"; +char tracing_path[PATH_MAX]        = "/sys/kernel/debug/tracing"; +char tracing_events_path[PATH_MAX] = "/sys/kernel/debug/tracing/events"; + + +static void __tracing_path_set(const char *tracing, const char *mountpoint) +{ +	snprintf(tracing_mnt, sizeof(tracing_mnt), "%s", mountpoint); +	snprintf(tracing_path, sizeof(tracing_path), "%s/%s", +		 mountpoint, tracing); +	snprintf(tracing_events_path, sizeof(tracing_events_path), "%s/%s%s", +		 mountpoint, tracing, "events"); +} + +static const char *tracing_path_tracefs_mount(void) +{ +	const char *mnt; + +	mnt = tracefs__mount(); +	if (!mnt) +		return NULL; + +	__tracing_path_set("", mnt); + +	return mnt; +} + +static const char *tracing_path_debugfs_mount(void) +{ +	const char *mnt; + +	mnt = debugfs__mount(); +	if (!mnt) +		return NULL; + +	__tracing_path_set("tracing/", mnt); + +	return mnt; +} + +const char *tracing_path_mount(void) +{ +	const char *mnt; + +	mnt = tracing_path_tracefs_mount(); +	if (mnt) +		return mnt; + +	mnt = tracing_path_debugfs_mount(); + +	return mnt; +} + +void tracing_path_set(const char *mntpt) +{ +	__tracing_path_set("tracing/", mntpt); +} + +char *get_tracing_file(const char *name) +{ +	char *file; + +	if (asprintf(&file, "%s/%s", tracing_path, name) < 0) +		return NULL; + +	return file; +} + +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: +		/* +		 * We will get here if we can't find the tracepoint, but one of +		 * debugfs or tracefs is configured, which means you probably +		 * want some tracepoint which wasn't compiled in your kernel. +		 * - jirka +		 */ +		if (debugfs__configured() || tracefs__configured()) { +			snprintf(buf, size, +				 "Error:\tFile %s/%s not found.\n" +				 "Hint:\tPerhaps this kernel misses some CONFIG_ setting to enable this feature?.\n", +				 tracing_events_path, filename); +			break; +		} +		snprintf(buf, size, "%s", +			 "Error:\tUnable to find debugfs/tracefs\n" +			 "Hint:\tWas your kernel compiled with debugfs/tracefs support?\n" +			 "Hint:\tIs the debugfs/tracefs 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", +			 tracing_events_path, filename, tracing_mnt); +	} +		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, "%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 new file mode 100644 index 000000000000..3f233ac70b6f --- /dev/null +++ b/tools/lib/api/fs/tracing_path.h @@ -0,0 +1,16 @@ +#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[]; + +void tracing_path_set(const char *mountpoint); +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 */ |