Commit c9add621 authored by Namhyung Kim's avatar Namhyung Kim Committed by Stefan Hajnoczi

trace: Try using tracefs first

Recent Linux kernel provides separate tracefs which doesn't need to be
mounted on the debugfs.  Although most systems mount it at the
traditional place on the debugfs, it'd be safer to check tracefs first.
Signed-off-by: 's avatarNamhyung Kim <namhyung@gmail.com>
Signed-off-by: 's avatarStefan Hajnoczi <stefanha@redhat.com>
parent babfff8e
......@@ -42,12 +42,18 @@ bool ftrace_init(void)
{
char mount_point[PATH_MAX];
char path[PATH_MAX];
int debugfs_found;
int tracefs_found;
int trace_fd = -1;
const char *subdir = "";
debugfs_found = find_mount(mount_point, "debugfs");
if (debugfs_found) {
snprintf(path, PATH_MAX, "%s/tracing/tracing_on", mount_point);
tracefs_found = find_mount(mount_point, "tracefs");
if (!tracefs_found) {
tracefs_found = find_mount(mount_point, "debugfs");
subdir = "/tracing";
}
if (tracefs_found) {
snprintf(path, PATH_MAX, "%s%s/tracing_on", mount_point, subdir);
trace_fd = open(path, O_WRONLY);
if (trace_fd < 0) {
if (errno == EACCES) {
......@@ -66,14 +72,14 @@ bool ftrace_init(void)
}
close(trace_fd);
}
snprintf(path, PATH_MAX, "%s/tracing/trace_marker", mount_point);
snprintf(path, PATH_MAX, "%s%s/trace_marker", mount_point, subdir);
trace_marker_fd = open(path, O_WRONLY);
if (trace_marker_fd < 0) {
perror("Could not open ftrace 'trace_marker' file");
return false;
}
} else {
fprintf(stderr, "debugfs is not mounted\n");
fprintf(stderr, "tracefs is not mounted\n");
return false;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment