diff options
Diffstat (limited to 'tools/lib/api')
| -rw-r--r-- | tools/lib/api/Build | 2 | ||||
| -rw-r--r-- | tools/lib/api/Makefile | 58 | ||||
| -rw-r--r-- | tools/lib/api/fd/Build | 1 | ||||
| -rw-r--r-- | tools/lib/api/fs/Build | 4 | ||||
| -rw-r--r-- | tools/lib/api/fs/debugfs.c | 69 | ||||
| -rw-r--r-- | tools/lib/api/fs/debugfs.h | 13 | ||||
| -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/tracefs.c | 78 | ||||
| -rw-r--r-- | tools/lib/api/fs/tracefs.h | 21 |
10 files changed, 242 insertions, 90 deletions
diff --git a/tools/lib/api/Build b/tools/lib/api/Build new file mode 100644 index 000000000000..3653965cf481 --- /dev/null +++ b/tools/lib/api/Build | |||
| @@ -0,0 +1,2 @@ | |||
| 1 | libapi-y += fd/ | ||
| 2 | libapi-y += fs/ | ||
diff --git a/tools/lib/api/Makefile b/tools/lib/api/Makefile index 36c08b1f4afb..d8fe29fc19a4 100644 --- a/tools/lib/api/Makefile +++ b/tools/lib/api/Makefile | |||
| @@ -1,49 +1,43 @@ | |||
| 1 | include ../../scripts/Makefile.include | 1 | include ../../scripts/Makefile.include |
| 2 | include ../../perf/config/utilities.mak # QUIET_CLEAN | 2 | include ../../perf/config/utilities.mak # QUIET_CLEAN |
| 3 | 3 | ||
| 4 | ifeq ($(srctree),) | ||
| 5 | srctree := $(patsubst %/,%,$(dir $(shell pwd))) | ||
| 6 | srctree := $(patsubst %/,%,$(dir $(srctree))) | ||
| 7 | srctree := $(patsubst %/,%,$(dir $(srctree))) | ||
| 8 | #$(info Determined 'srctree' to be $(srctree)) | ||
| 9 | endif | ||
| 10 | |||
| 4 | CC = $(CROSS_COMPILE)gcc | 11 | CC = $(CROSS_COMPILE)gcc |
| 5 | AR = $(CROSS_COMPILE)ar | 12 | AR = $(CROSS_COMPILE)ar |
| 6 | 13 | ||
| 7 | # guard against environment variables | 14 | MAKEFLAGS += --no-print-directory |
| 8 | LIB_H= | ||
| 9 | LIB_OBJS= | ||
| 10 | |||
| 11 | LIB_H += fs/debugfs.h | ||
| 12 | LIB_H += fs/fs.h | ||
| 13 | # See comment below about piggybacking... | ||
| 14 | LIB_H += fd/array.h | ||
| 15 | |||
| 16 | LIB_OBJS += $(OUTPUT)fs/debugfs.o | ||
| 17 | LIB_OBJS += $(OUTPUT)fs/fs.o | ||
| 18 | # XXX piggybacking here, need to introduce libapikfd, or rename this | ||
| 19 | # to plain libapik.a and make it have it all api goodies | ||
| 20 | LIB_OBJS += $(OUTPUT)fd/array.o | ||
| 21 | 15 | ||
| 22 | LIBFILE = libapikfs.a | 16 | LIBFILE = $(OUTPUT)libapi.a |
| 23 | 17 | ||
| 24 | CFLAGS = -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) -fPIC | 18 | CFLAGS := $(EXTRA_WARNINGS) $(EXTRA_CFLAGS) |
| 25 | EXTLIBS = -lelf -lpthread -lrt -lm | 19 | CFLAGS += -ggdb3 -Wall -Wextra -std=gnu99 -Werror -O6 -D_FORTIFY_SOURCE=2 -fPIC |
| 26 | ALL_CFLAGS = $(CFLAGS) $(BASIC_CFLAGS) -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 | 20 | CFLAGS += -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 |
| 27 | ALL_LDFLAGS = $(LDFLAGS) | ||
| 28 | 21 | ||
| 29 | RM = rm -f | 22 | RM = rm -f |
| 30 | 23 | ||
| 31 | $(LIBFILE): $(LIB_OBJS) | 24 | build := -f $(srctree)/tools/build/Makefile.build dir=. obj |
| 32 | $(QUIET_AR)$(RM) $@ && $(AR) rcs $(OUTPUT)$@ $(LIB_OBJS) | 25 | API_IN := $(OUTPUT)libapi-in.o |
| 33 | 26 | ||
| 34 | $(LIB_OBJS): $(LIB_H) | 27 | export srctree OUTPUT CC LD CFLAGS V |
| 35 | 28 | ||
| 36 | libapi_dirs: | 29 | all: $(LIBFILE) |
| 37 | $(QUIET_MKDIR)mkdir -p $(OUTPUT)fd $(OUTPUT)fs | ||
| 38 | 30 | ||
| 39 | $(OUTPUT)%.o: %.c libapi_dirs | 31 | $(API_IN): FORCE |
| 40 | $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $< | 32 | @$(MAKE) $(build)=libapi |
| 41 | $(OUTPUT)%.s: %.c libapi_dirs | 33 | |
| 42 | $(QUIET_CC)$(CC) -S $(ALL_CFLAGS) $< | 34 | $(LIBFILE): $(API_IN) |
| 43 | $(OUTPUT)%.o: %.S libapi_dirs | 35 | $(QUIET_AR)$(RM) $@ && $(AR) rcs $@ $(API_IN) |
| 44 | $(QUIET_CC)$(CC) -o $@ -c $(ALL_CFLAGS) $< | ||
| 45 | 36 | ||
| 46 | clean: | 37 | clean: |
| 47 | $(call QUIET_CLEAN, libapi) $(RM) $(LIB_OBJS) $(LIBFILE) | 38 | $(call QUIET_CLEAN, libapi) $(RM) $(LIBFILE); \ |
| 39 | find $(if $(OUTPUT),$(OUTPUT),.) -name \*.o | xargs $(RM) | ||
| 40 | |||
| 41 | FORCE: | ||
| 48 | 42 | ||
| 49 | .PHONY: clean | 43 | .PHONY: clean FORCE |
diff --git a/tools/lib/api/fd/Build b/tools/lib/api/fd/Build new file mode 100644 index 000000000000..605d99f6d71a --- /dev/null +++ b/tools/lib/api/fd/Build | |||
| @@ -0,0 +1 @@ | |||
| libapi-y += array.o | |||
diff --git a/tools/lib/api/fs/Build b/tools/lib/api/fs/Build new file mode 100644 index 000000000000..6de5a4f0b501 --- /dev/null +++ b/tools/lib/api/fs/Build | |||
| @@ -0,0 +1,4 @@ | |||
| 1 | libapi-y += fs.o | ||
| 2 | libapi-y += debugfs.o | ||
| 3 | libapi-y += findfs.o | ||
| 4 | libapi-y += tracefs.o | ||
diff --git a/tools/lib/api/fs/debugfs.c b/tools/lib/api/fs/debugfs.c index d2b18e887071..8305b3e9d48e 100644 --- a/tools/lib/api/fs/debugfs.c +++ b/tools/lib/api/fs/debugfs.c | |||
| @@ -3,75 +3,50 @@ | |||
| 3 | #include <stdio.h> | 3 | #include <stdio.h> |
| 4 | #include <stdlib.h> | 4 | #include <stdlib.h> |
| 5 | #include <string.h> | 5 | #include <string.h> |
| 6 | #include <unistd.h> | ||
| 6 | #include <stdbool.h> | 7 | #include <stdbool.h> |
| 7 | #include <sys/vfs.h> | 8 | #include <sys/vfs.h> |
| 9 | #include <sys/types.h> | ||
| 10 | #include <sys/stat.h> | ||
| 8 | #include <sys/mount.h> | 11 | #include <sys/mount.h> |
| 9 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
| 10 | 13 | ||
| 11 | #include "debugfs.h" | 14 | #include "debugfs.h" |
| 12 | 15 | ||
| 13 | char debugfs_mountpoint[PATH_MAX + 1] = "/sys/kernel/debug"; | 16 | #ifndef DEBUGFS_DEFAULT_PATH |
| 17 | #define DEBUGFS_DEFAULT_PATH "/sys/kernel/debug" | ||
| 18 | #endif | ||
| 19 | |||
| 20 | char debugfs_mountpoint[PATH_MAX + 1] = DEBUGFS_DEFAULT_PATH; | ||
| 14 | 21 | ||
| 15 | static const char * const debugfs_known_mountpoints[] = { | 22 | static const char * const debugfs_known_mountpoints[] = { |
| 16 | "/sys/kernel/debug", | 23 | DEBUGFS_DEFAULT_PATH, |
| 17 | "/debug", | 24 | "/debug", |
| 18 | 0, | 25 | 0, |
| 19 | }; | 26 | }; |
| 20 | 27 | ||
| 21 | static bool debugfs_found; | 28 | static bool debugfs_found; |
| 22 | 29 | ||
| 30 | bool debugfs_configured(void) | ||
| 31 | { | ||
| 32 | return debugfs_find_mountpoint() != NULL; | ||
| 33 | } | ||
| 34 | |||
| 23 | /* find the path to the mounted debugfs */ | 35 | /* find the path to the mounted debugfs */ |
| 24 | const char *debugfs_find_mountpoint(void) | 36 | const char *debugfs_find_mountpoint(void) |
| 25 | { | 37 | { |
| 26 | const char * const *ptr; | 38 | const char *ret; |
| 27 | char type[100]; | ||
| 28 | FILE *fp; | ||
| 29 | 39 | ||
| 30 | if (debugfs_found) | 40 | if (debugfs_found) |
| 31 | return (const char *)debugfs_mountpoint; | 41 | return (const char *)debugfs_mountpoint; |
| 32 | 42 | ||
| 33 | ptr = debugfs_known_mountpoints; | 43 | ret = find_mountpoint("debugfs", (long) DEBUGFS_MAGIC, |
| 34 | while (*ptr) { | 44 | debugfs_mountpoint, PATH_MAX + 1, |
| 35 | if (debugfs_valid_mountpoint(*ptr) == 0) { | 45 | debugfs_known_mountpoints); |
| 36 | debugfs_found = true; | 46 | if (ret) |
| 37 | strcpy(debugfs_mountpoint, *ptr); | 47 | debugfs_found = true; |
| 38 | return debugfs_mountpoint; | ||
| 39 | } | ||
| 40 | ptr++; | ||
| 41 | } | ||
| 42 | |||
| 43 | /* give up and parse /proc/mounts */ | ||
| 44 | fp = fopen("/proc/mounts", "r"); | ||
| 45 | if (fp == NULL) | ||
| 46 | return NULL; | ||
| 47 | |||
| 48 | while (fscanf(fp, "%*s %" STR(PATH_MAX) "s %99s %*s %*d %*d\n", | ||
| 49 | debugfs_mountpoint, type) == 2) { | ||
| 50 | if (strcmp(type, "debugfs") == 0) | ||
| 51 | break; | ||
| 52 | } | ||
| 53 | fclose(fp); | ||
| 54 | 48 | ||
| 55 | if (strcmp(type, "debugfs") != 0) | 49 | return ret; |
| 56 | return NULL; | ||
| 57 | |||
| 58 | debugfs_found = true; | ||
| 59 | |||
| 60 | return debugfs_mountpoint; | ||
| 61 | } | ||
| 62 | |||
| 63 | /* verify that a mountpoint is actually a debugfs instance */ | ||
| 64 | |||
| 65 | int debugfs_valid_mountpoint(const char *debugfs) | ||
| 66 | { | ||
| 67 | struct statfs st_fs; | ||
| 68 | |||
| 69 | if (statfs(debugfs, &st_fs) < 0) | ||
| 70 | return -ENOENT; | ||
| 71 | else if ((long)st_fs.f_type != (long)DEBUGFS_MAGIC) | ||
| 72 | return -ENOENT; | ||
| 73 | |||
| 74 | return 0; | ||
| 75 | } | 50 | } |
| 76 | 51 | ||
| 77 | /* mount the debugfs somewhere if it's not mounted */ | 52 | /* mount the debugfs somewhere if it's not mounted */ |
| @@ -87,7 +62,7 @@ char *debugfs_mount(const char *mountpoint) | |||
| 87 | mountpoint = getenv(PERF_DEBUGFS_ENVIRONMENT); | 62 | mountpoint = getenv(PERF_DEBUGFS_ENVIRONMENT); |
| 88 | /* if no environment variable, use default */ | 63 | /* if no environment variable, use default */ |
| 89 | if (mountpoint == NULL) | 64 | if (mountpoint == NULL) |
| 90 | mountpoint = "/sys/kernel/debug"; | 65 | mountpoint = DEBUGFS_DEFAULT_PATH; |
| 91 | } | 66 | } |
| 92 | 67 | ||
| 93 | if (mount(NULL, mountpoint, "debugfs", 0, NULL) < 0) | 68 | if (mount(NULL, mountpoint, "debugfs", 0, NULL) < 0) |
diff --git a/tools/lib/api/fs/debugfs.h b/tools/lib/api/fs/debugfs.h index 0739881a9897..455023698d2b 100644 --- a/tools/lib/api/fs/debugfs.h +++ b/tools/lib/api/fs/debugfs.h | |||
| @@ -1,16 +1,7 @@ | |||
| 1 | #ifndef __API_DEBUGFS_H__ | 1 | #ifndef __API_DEBUGFS_H__ |
| 2 | #define __API_DEBUGFS_H__ | 2 | #define __API_DEBUGFS_H__ |
| 3 | 3 | ||
| 4 | #define _STR(x) #x | 4 | #include "findfs.h" |
| 5 | #define STR(x) _STR(x) | ||
| 6 | |||
| 7 | /* | ||
| 8 | * On most systems <limits.h> would have given us this, but not on some systems | ||
| 9 | * (e.g. GNU/Hurd). | ||
| 10 | */ | ||
| 11 | #ifndef PATH_MAX | ||
| 12 | #define PATH_MAX 4096 | ||
| 13 | #endif | ||
| 14 | 5 | ||
| 15 | #ifndef DEBUGFS_MAGIC | 6 | #ifndef DEBUGFS_MAGIC |
| 16 | #define DEBUGFS_MAGIC 0x64626720 | 7 | #define DEBUGFS_MAGIC 0x64626720 |
| @@ -20,8 +11,8 @@ | |||
| 20 | #define PERF_DEBUGFS_ENVIRONMENT "PERF_DEBUGFS_DIR" | 11 | #define PERF_DEBUGFS_ENVIRONMENT "PERF_DEBUGFS_DIR" |
| 21 | #endif | 12 | #endif |
| 22 | 13 | ||
| 14 | bool debugfs_configured(void); | ||
| 23 | const char *debugfs_find_mountpoint(void); | 15 | const char *debugfs_find_mountpoint(void); |
| 24 | int debugfs_valid_mountpoint(const char *debugfs); | ||
| 25 | char *debugfs_mount(const char *mountpoint); | 16 | char *debugfs_mount(const char *mountpoint); |
| 26 | 17 | ||
| 27 | extern char debugfs_mountpoint[]; | 18 | extern char debugfs_mountpoint[]; |
diff --git a/tools/lib/api/fs/findfs.c b/tools/lib/api/fs/findfs.c new file mode 100644 index 000000000000..49946cb6d7af --- /dev/null +++ b/tools/lib/api/fs/findfs.c | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | #include <errno.h> | ||
| 2 | #include <stdio.h> | ||
| 3 | #include <stdlib.h> | ||
| 4 | #include <string.h> | ||
| 5 | #include <stdbool.h> | ||
| 6 | #include <sys/vfs.h> | ||
| 7 | |||
| 8 | #include "findfs.h" | ||
| 9 | |||
| 10 | /* verify that a mountpoint is actually the type we want */ | ||
| 11 | |||
| 12 | int valid_mountpoint(const char *mount, long magic) | ||
| 13 | { | ||
| 14 | struct statfs st_fs; | ||
| 15 | |||
| 16 | if (statfs(mount, &st_fs) < 0) | ||
| 17 | return -ENOENT; | ||
| 18 | else if ((long)st_fs.f_type != magic) | ||
| 19 | return -ENOENT; | ||
| 20 | |||
| 21 | return 0; | ||
| 22 | } | ||
| 23 | |||
| 24 | /* find the path to a mounted file system */ | ||
| 25 | const char *find_mountpoint(const char *fstype, long magic, | ||
| 26 | char *mountpoint, int len, | ||
| 27 | const char * const *known_mountpoints) | ||
| 28 | { | ||
| 29 | const char * const *ptr; | ||
| 30 | char format[128]; | ||
| 31 | char type[100]; | ||
| 32 | FILE *fp; | ||
| 33 | |||
| 34 | if (known_mountpoints) { | ||
| 35 | ptr = known_mountpoints; | ||
| 36 | while (*ptr) { | ||
| 37 | if (valid_mountpoint(*ptr, magic) == 0) { | ||
| 38 | strncpy(mountpoint, *ptr, len - 1); | ||
| 39 | mountpoint[len-1] = 0; | ||
| 40 | return mountpoint; | ||
| 41 | } | ||
| 42 | ptr++; | ||
| 43 | } | ||
| 44 | } | ||
| 45 | |||
| 46 | /* give up and parse /proc/mounts */ | ||
| 47 | fp = fopen("/proc/mounts", "r"); | ||
| 48 | if (fp == NULL) | ||
| 49 | return NULL; | ||
| 50 | |||
| 51 | snprintf(format, 128, "%%*s %%%ds %%99s %%*s %%*d %%*d\n", len); | ||
| 52 | |||
| 53 | while (fscanf(fp, format, mountpoint, type) == 2) { | ||
| 54 | if (strcmp(type, fstype) == 0) | ||
| 55 | break; | ||
| 56 | } | ||
| 57 | fclose(fp); | ||
| 58 | |||
| 59 | if (strcmp(type, fstype) != 0) | ||
| 60 | return NULL; | ||
| 61 | |||
| 62 | return mountpoint; | ||
| 63 | } | ||
diff --git a/tools/lib/api/fs/findfs.h b/tools/lib/api/fs/findfs.h new file mode 100644 index 000000000000..b6f5d05acc42 --- /dev/null +++ b/tools/lib/api/fs/findfs.h | |||
| @@ -0,0 +1,23 @@ | |||
| 1 | #ifndef __API_FINDFS_H__ | ||
| 2 | #define __API_FINDFS_H__ | ||
| 3 | |||
| 4 | #include <stdbool.h> | ||
| 5 | |||
| 6 | #define _STR(x) #x | ||
| 7 | #define STR(x) _STR(x) | ||
| 8 | |||
| 9 | /* | ||
| 10 | * On most systems <limits.h> would have given us this, but not on some systems | ||
| 11 | * (e.g. GNU/Hurd). | ||
| 12 | */ | ||
| 13 | #ifndef PATH_MAX | ||
| 14 | #define PATH_MAX 4096 | ||
| 15 | #endif | ||
| 16 | |||
| 17 | const char *find_mountpoint(const char *fstype, long magic, | ||
| 18 | char *mountpoint, int len, | ||
| 19 | const char * const *known_mountpoints); | ||
| 20 | |||
| 21 | int valid_mountpoint(const char *mount, long magic); | ||
| 22 | |||
| 23 | #endif /* __API_FINDFS_H__ */ | ||
diff --git a/tools/lib/api/fs/tracefs.c b/tools/lib/api/fs/tracefs.c new file mode 100644 index 000000000000..e4aa9688b71e --- /dev/null +++ b/tools/lib/api/fs/tracefs.c | |||
| @@ -0,0 +1,78 @@ | |||
| 1 | #include <errno.h> | ||
| 2 | #include <stdio.h> | ||
| 3 | #include <stdlib.h> | ||
| 4 | #include <string.h> | ||
| 5 | #include <unistd.h> | ||
| 6 | #include <stdbool.h> | ||
| 7 | #include <sys/vfs.h> | ||
| 8 | #include <sys/types.h> | ||
| 9 | #include <sys/stat.h> | ||
| 10 | #include <sys/mount.h> | ||
| 11 | #include <linux/kernel.h> | ||
| 12 | |||
| 13 | #include "tracefs.h" | ||
| 14 | |||
| 15 | #ifndef TRACEFS_DEFAULT_PATH | ||
| 16 | #define TRACEFS_DEFAULT_PATH "/sys/kernel/tracing" | ||
| 17 | #endif | ||
| 18 | |||
| 19 | char tracefs_mountpoint[PATH_MAX + 1] = TRACEFS_DEFAULT_PATH; | ||
| 20 | |||
| 21 | static const char * const tracefs_known_mountpoints[] = { | ||
| 22 | TRACEFS_DEFAULT_PATH, | ||
| 23 | "/sys/kernel/debug/tracing", | ||
| 24 | "/tracing", | ||
| 25 | "/trace", | ||
| 26 | 0, | ||
| 27 | }; | ||
| 28 | |||
| 29 | static bool tracefs_found; | ||
| 30 | |||
| 31 | bool tracefs_configured(void) | ||
| 32 | { | ||
| 33 | return tracefs_find_mountpoint() != NULL; | ||
| 34 | } | ||
| 35 | |||
| 36 | /* find the path to the mounted tracefs */ | ||
| 37 | const char *tracefs_find_mountpoint(void) | ||
| 38 | { | ||
| 39 | const char *ret; | ||
| 40 | |||
| 41 | if (tracefs_found) | ||
| 42 | return (const char *)tracefs_mountpoint; | ||
| 43 | |||
| 44 | ret = find_mountpoint("tracefs", (long) TRACEFS_MAGIC, | ||
| 45 | tracefs_mountpoint, PATH_MAX + 1, | ||
| 46 | tracefs_known_mountpoints); | ||
| 47 | |||
| 48 | if (ret) | ||
| 49 | tracefs_found = true; | ||
| 50 | |||
| 51 | return ret; | ||
| 52 | } | ||
| 53 | |||
| 54 | /* mount the tracefs somewhere if it's not mounted */ | ||
| 55 | char *tracefs_mount(const char *mountpoint) | ||
| 56 | { | ||
| 57 | /* see if it's already mounted */ | ||
| 58 | if (tracefs_find_mountpoint()) | ||
| 59 | goto out; | ||
| 60 | |||
| 61 | /* if not mounted and no argument */ | ||
| 62 | if (mountpoint == NULL) { | ||
| 63 | /* see if environment variable set */ | ||
| 64 | mountpoint = getenv(PERF_TRACEFS_ENVIRONMENT); | ||
| 65 | /* if no environment variable, use default */ | ||
| 66 | if (mountpoint == NULL) | ||
| 67 | mountpoint = TRACEFS_DEFAULT_PATH; | ||
| 68 | } | ||
| 69 | |||
| 70 | if (mount(NULL, mountpoint, "tracefs", 0, NULL) < 0) | ||
| 71 | return NULL; | ||
| 72 | |||
| 73 | /* save the mountpoint */ | ||
| 74 | tracefs_found = true; | ||
| 75 | strncpy(tracefs_mountpoint, mountpoint, sizeof(tracefs_mountpoint)); | ||
| 76 | out: | ||
| 77 | return tracefs_mountpoint; | ||
| 78 | } | ||
diff --git a/tools/lib/api/fs/tracefs.h b/tools/lib/api/fs/tracefs.h new file mode 100644 index 000000000000..da780ac49acb --- /dev/null +++ b/tools/lib/api/fs/tracefs.h | |||
| @@ -0,0 +1,21 @@ | |||
| 1 | #ifndef __API_TRACEFS_H__ | ||
| 2 | #define __API_TRACEFS_H__ | ||
| 3 | |||
| 4 | #include "findfs.h" | ||
| 5 | |||
| 6 | #ifndef TRACEFS_MAGIC | ||
| 7 | #define TRACEFS_MAGIC 0x74726163 | ||
| 8 | #endif | ||
| 9 | |||
| 10 | #ifndef PERF_TRACEFS_ENVIRONMENT | ||
| 11 | #define PERF_TRACEFS_ENVIRONMENT "PERF_TRACEFS_DIR" | ||
| 12 | #endif | ||
| 13 | |||
| 14 | bool tracefs_configured(void); | ||
| 15 | const char *tracefs_find_mountpoint(void); | ||
| 16 | int tracefs_valid_mountpoint(const char *debugfs); | ||
| 17 | char *tracefs_mount(const char *mountpoint); | ||
| 18 | |||
| 19 | extern char tracefs_mountpoint[]; | ||
| 20 | |||
| 21 | #endif /* __API_DEBUGFS_H__ */ | ||
