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: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
25a7d91427
commit
7014e0e3bf
|
@ -101,6 +101,19 @@ void put_events_file(char *file)
|
||||||
free(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,
|
int tracing_path__strerror_open_tp(int err, char *buf, size_t size,
|
||||||
const char *sys, const char *name)
|
const char *sys, const char *name)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3,9 +3,12 @@
|
||||||
#define __API_FS_TRACING_PATH_H
|
#define __API_FS_TRACING_PATH_H
|
||||||
|
|
||||||
#include <linux/types.h>
|
#include <linux/types.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
|
||||||
extern char tracing_events_path[];
|
extern char tracing_events_path[];
|
||||||
|
|
||||||
|
DIR *tracing_events__opendir(void);
|
||||||
|
|
||||||
void tracing_path_set(const char *mountpoint);
|
void tracing_path_set(const char *mountpoint);
|
||||||
const char *tracing_path_mount(void);
|
const char *tracing_path_mount(void);
|
||||||
|
|
||||||
|
|
|
@ -1323,7 +1323,7 @@ static int count_tracepoints(void)
|
||||||
DIR *events_dir;
|
DIR *events_dir;
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
|
|
||||||
events_dir = opendir(tracing_events_path);
|
events_dir = tracing_events__opendir();
|
||||||
|
|
||||||
TEST_ASSERT_VAL("Can't open events dir", events_dir);
|
TEST_ASSERT_VAL("Can't open events dir", events_dir);
|
||||||
|
|
||||||
|
|
|
@ -191,7 +191,7 @@ struct tracepoint_path *tracepoint_id_to_path(u64 config)
|
||||||
char evt_path[MAXPATHLEN];
|
char evt_path[MAXPATHLEN];
|
||||||
char *dir_path;
|
char *dir_path;
|
||||||
|
|
||||||
sys_dir = opendir(tracing_events_path);
|
sys_dir = tracing_events__opendir();
|
||||||
if (!sys_dir)
|
if (!sys_dir)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -578,7 +578,7 @@ static int add_tracepoint_multi_sys(struct list_head *list, int *idx,
|
||||||
DIR *events_dir;
|
DIR *events_dir;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
events_dir = opendir(tracing_events_path);
|
events_dir = tracing_events__opendir();
|
||||||
if (!events_dir) {
|
if (!events_dir) {
|
||||||
tracepoint_error(err, errno, sys_name, evt_name);
|
tracepoint_error(err, errno, sys_name, evt_name);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -2106,7 +2106,7 @@ void print_tracepoint_events(const char *subsys_glob, const char *event_glob,
|
||||||
bool evt_num_known = false;
|
bool evt_num_known = false;
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
sys_dir = opendir(tracing_events_path);
|
sys_dir = tracing_events__opendir();
|
||||||
if (!sys_dir)
|
if (!sys_dir)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -2200,7 +2200,7 @@ int is_valid_tracepoint(const char *event_string)
|
||||||
char evt_path[MAXPATHLEN];
|
char evt_path[MAXPATHLEN];
|
||||||
char *dir_path;
|
char *dir_path;
|
||||||
|
|
||||||
sys_dir = opendir(tracing_events_path);
|
sys_dir = tracing_events__opendir();
|
||||||
if (!sys_dir)
|
if (!sys_dir)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue