diff options
author | Jiri Olsa <jolsa@kernel.org> | 2015-09-02 03:56:34 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2015-09-04 11:00:45 -0400 |
commit | 592d5a6ba86a31681fa5e20a63a145b0a3b53c8a (patch) | |
tree | 4a37f6605fb5ab3b3b974ecf23e23cd2a46c81a3 /tools/lib/api/fs/tracing_path.c | |
parent | 65d4b265103a3cb2f0993c946815157a38797421 (diff) |
tools lib api fs: Move tracing_path interface into api/fs/tracing_path.c
Moving tracing_path interface into api/fs/tracing_path.c out of util.c.
It seems generic enough to be used by others, and I couldn't think of
better place.
Signed-off-by: Jiri Olsa <jolsa@kernel.org>
Reviewed-by: Matt Fleming <matt.fleming@intel.com>
Reviewed-by: Raphael Beamonte <raphael.beamonte@gmail.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Steven Rostedt <rostedt@goodmis.org>
Link: http://lkml.kernel.org/r/1441180605-24737-5-git-send-email-jolsa@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/lib/api/fs/tracing_path.c')
-rw-r--r-- | tools/lib/api/fs/tracing_path.c | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/tools/lib/api/fs/tracing_path.c b/tools/lib/api/fs/tracing_path.c new file mode 100644 index 000000000000..1fd6e1f99234 --- /dev/null +++ b/tools/lib/api/fs/tracing_path.c | |||
@@ -0,0 +1,83 @@ | |||
1 | #ifndef _GNU_SOURCE | ||
2 | # define _GNU_SOURCE | ||
3 | #endif | ||
4 | |||
5 | #include <stdio.h> | ||
6 | #include <stdlib.h> | ||
7 | #include <string.h> | ||
8 | #include "debugfs.h" | ||
9 | #include "tracefs.h" | ||
10 | |||
11 | #include "tracing_path.h" | ||
12 | |||
13 | |||
14 | char tracing_path[PATH_MAX + 1] = "/sys/kernel/debug/tracing"; | ||
15 | char tracing_events_path[PATH_MAX + 1] = "/sys/kernel/debug/tracing/events"; | ||
16 | |||
17 | |||
18 | static void __tracing_path_set(const char *tracing, const char *mountpoint) | ||
19 | { | ||
20 | snprintf(tracing_path, sizeof(tracing_path), "%s/%s", | ||
21 | mountpoint, tracing); | ||
22 | snprintf(tracing_events_path, sizeof(tracing_events_path), "%s/%s%s", | ||
23 | mountpoint, tracing, "events"); | ||
24 | } | ||
25 | |||
26 | static const char *tracing_path_tracefs_mount(void) | ||
27 | { | ||
28 | const char *mnt; | ||
29 | |||
30 | mnt = tracefs_mount(NULL); | ||
31 | if (!mnt) | ||
32 | return NULL; | ||
33 | |||
34 | __tracing_path_set("", mnt); | ||
35 | |||
36 | return mnt; | ||
37 | } | ||
38 | |||
39 | static const char *tracing_path_debugfs_mount(void) | ||
40 | { | ||
41 | const char *mnt; | ||
42 | |||
43 | mnt = debugfs_mount(NULL); | ||
44 | if (!mnt) | ||
45 | return NULL; | ||
46 | |||
47 | __tracing_path_set("tracing/", mnt); | ||
48 | |||
49 | return mnt; | ||
50 | } | ||
51 | |||
52 | const char *tracing_path_mount(void) | ||
53 | { | ||
54 | const char *mnt; | ||
55 | |||
56 | mnt = tracing_path_tracefs_mount(); | ||
57 | if (mnt) | ||
58 | return mnt; | ||
59 | |||
60 | mnt = tracing_path_debugfs_mount(); | ||
61 | |||
62 | return mnt; | ||
63 | } | ||
64 | |||
65 | void tracing_path_set(const char *mntpt) | ||
66 | { | ||
67 | __tracing_path_set("tracing/", mntpt); | ||
68 | } | ||
69 | |||
70 | char *get_tracing_file(const char *name) | ||
71 | { | ||
72 | char *file; | ||
73 | |||
74 | if (asprintf(&file, "%s/%s", tracing_path, name) < 0) | ||
75 | return NULL; | ||
76 | |||
77 | return file; | ||
78 | } | ||
79 | |||
80 | void put_tracing_file(char *file) | ||
81 | { | ||
82 | free(file); | ||
83 | } | ||