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

Commit 7014e0e3 authored by Arnaldo Carvalho de Melo's avatar Arnaldo Carvalho de Melo
Browse files

tools lib api fs tracing_path: Introduce opendir() method

That takes care of using the right call to get the tracing_path
directory, the one that will end up calling tracing_path_set() to figure
out where tracefs is mounted.

One more step in doing just lazy reading of system structures to reduce
the number of operations done unconditionaly at 'perf' start.

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Wang Nan <wangnan0@huawei.com>
Link: https://lkml.kernel.org/n/tip-42zzi0f274909bg9mxzl81bu@git.kernel.org


Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
parent 25a7d914
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -101,6 +101,19 @@ void put_events_file(char *file)
	free(file);
}

DIR *tracing_events__opendir(void)
{
	DIR *dir = NULL;
	char *path = get_tracing_file("events");

	if (path) {
		dir = opendir(path);
		put_events_file(path);
	}

	return dir;
}

int tracing_path__strerror_open_tp(int err, char *buf, size_t size,
				   const char *sys, const char *name)
{
+3 −0
Original line number Diff line number Diff line
@@ -3,9 +3,12 @@
#define __API_FS_TRACING_PATH_H

#include <linux/types.h>
#include <dirent.h>

extern char tracing_events_path[];

DIR *tracing_events__opendir(void);

void tracing_path_set(const char *mountpoint);
const char *tracing_path_mount(void);

+1 −1
Original line number Diff line number Diff line
@@ -1323,7 +1323,7 @@ static int count_tracepoints(void)
	DIR *events_dir;
	int cnt = 0;

	events_dir = opendir(tracing_events_path);
	events_dir = tracing_events__opendir();

	TEST_ASSERT_VAL("Can't open events dir", events_dir);

+4 −4
Original line number Diff line number Diff line
@@ -191,7 +191,7 @@ struct tracepoint_path *tracepoint_id_to_path(u64 config)
	char evt_path[MAXPATHLEN];
	char *dir_path;

	sys_dir = opendir(tracing_events_path);
	sys_dir = tracing_events__opendir();
	if (!sys_dir)
		return NULL;

@@ -578,7 +578,7 @@ static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
	DIR *events_dir;
	int ret = 0;

	events_dir = opendir(tracing_events_path);
	events_dir = tracing_events__opendir();
	if (!events_dir) {
		tracepoint_error(err, errno, sys_name, evt_name);
		return -1;
@@ -2106,7 +2106,7 @@ void print_tracepoint_events(const char *subsys_glob, const char *event_glob,
	bool evt_num_known = false;

restart:
	sys_dir = opendir(tracing_events_path);
	sys_dir = tracing_events__opendir();
	if (!sys_dir)
		return;

@@ -2200,7 +2200,7 @@ int is_valid_tracepoint(const char *event_string)
	char evt_path[MAXPATHLEN];
	char *dir_path;

	sys_dir = opendir(tracing_events_path);
	sys_dir = tracing_events__opendir();
	if (!sys_dir)
		return 0;