Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 23773ca1 authored by Steven Rostedt (Red Hat)'s avatar Steven Rostedt (Red Hat) Committed by Arnaldo Carvalho de Melo
Browse files

perf tools: Make perf aware of tracefs



As tracefs may be mounted instead of debugfs to get to the event
directories, have perf know about tracefs, and use that file system over
debugfs if it is present.

Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Link: http://lkml.kernel.org/r/20150202193553.340946602@goodmis.org


[ Fixed up error messages about tracefs pointed out by Namhyung ]
Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent dd6dda27
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -29,7 +29,12 @@ int test__open_syscall_event_on_all_cpus(void)


	evsel = perf_evsel__newtp("syscalls", "sys_enter_open");
	evsel = perf_evsel__newtp("syscalls", "sys_enter_open");
	if (evsel == NULL) {
	if (evsel == NULL) {
		if (tracefs_configured())
			pr_debug("is tracefs mounted on /sys/kernel/tracing?\n");
		else if (debugfs_configured())
			pr_debug("is debugfs mounted on /sys/kernel/debug?\n");
			pr_debug("is debugfs mounted on /sys/kernel/debug?\n");
		else
			pr_debug("Neither tracefs or debugfs is enabled in this kernel\n");
		goto out_thread_map_delete;
		goto out_thread_map_delete;
	}
	}


+6 −1
Original line number Original line Diff line number Diff line
@@ -18,7 +18,12 @@ int test__open_syscall_event(void)


	evsel = perf_evsel__newtp("syscalls", "sys_enter_open");
	evsel = perf_evsel__newtp("syscalls", "sys_enter_open");
	if (evsel == NULL) {
	if (evsel == NULL) {
		if (tracefs_configured())
			pr_debug("is tracefs mounted on /sys/kernel/tracing?\n");
		else if (debugfs_configured())
			pr_debug("is debugfs mounted on /sys/kernel/debug?\n");
			pr_debug("is debugfs mounted on /sys/kernel/debug?\n");
		else
			pr_debug("Neither tracefs or debugfs is enabled in this kernel\n");
		goto out_thread_map_delete;
		goto out_thread_map_delete;
	}
	}


+11 −2
Original line number Original line Diff line number Diff line
@@ -3,6 +3,7 @@
#include "evsel.h"
#include "evsel.h"
#include "evlist.h"
#include "evlist.h"
#include <api/fs/fs.h>
#include <api/fs/fs.h>
#include <api/fs/tracefs.h>
#include <api/fs/debugfs.h>
#include <api/fs/debugfs.h>
#include "tests.h"
#include "tests.h"
#include "debug.h"
#include "debug.h"
@@ -1192,11 +1193,19 @@ static int count_tracepoints(void)
{
{
	char events_path[PATH_MAX];
	char events_path[PATH_MAX];
	struct dirent *events_ent;
	struct dirent *events_ent;
	const char *mountpoint;
	DIR *events_dir;
	DIR *events_dir;
	int cnt = 0;
	int cnt = 0;


	mountpoint = tracefs_find_mountpoint();
	if (mountpoint) {
		scnprintf(events_path, PATH_MAX, "%s/events",
			  mountpoint);
	} else {
		mountpoint = debugfs_find_mountpoint();
		scnprintf(events_path, PATH_MAX, "%s/tracing/events",
		scnprintf(events_path, PATH_MAX, "%s/tracing/events",
		  debugfs_find_mountpoint());
			  mountpoint);
	}


	events_dir = opendir(events_path);
	events_dir = opendir(events_path);


+1 −0
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
#define EXEC_PATH_ENVIRONMENT "PERF_EXEC_PATH"
#define EXEC_PATH_ENVIRONMENT "PERF_EXEC_PATH"
#define DEFAULT_PERF_DIR_ENVIRONMENT ".perf"
#define DEFAULT_PERF_DIR_ENVIRONMENT ".perf"
#define PERF_DEBUGFS_ENVIRONMENT "PERF_DEBUGFS_DIR"
#define PERF_DEBUGFS_ENVIRONMENT "PERF_DEBUGFS_DIR"
#define PERF_TRACEFS_ENVIRONMENT "PERF_TRACEFS_DIR"


typedef int (*config_fn_t)(const char *, const char *, void *);
typedef int (*config_fn_t)(const char *, const char *, void *);
extern int perf_default_config(const char *, const char *, void *);
extern int perf_default_config(const char *, const char *, void *);
+0 −1
Original line number Original line Diff line number Diff line
@@ -7,7 +7,6 @@
 * Released under the GPL v2. (and only v2, not any later version)
 * Released under the GPL v2. (and only v2, not any later version)
 */
 */
#include "util.h"
#include "util.h"
#include <api/fs/debugfs.h>
#include <api/fs/fs.h>
#include <api/fs/fs.h>
#include <poll.h>
#include <poll.h>
#include "cpumap.h"
#include "cpumap.h"
Loading