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>
+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)
{
int tracing_path__strerror_open_tp(int err, char *buf, size_t size,
const char *sys, const char *name)
{
#define __API_FS_TRACING_PATH_H
#include <linux/types.h>
#define __API_FS_TRACING_PATH_H
#include <linux/types.h>
extern char tracing_events_path[];
extern char tracing_events_path[];
+DIR *tracing_events__opendir(void);
+
void tracing_path_set(const char *mountpoint);
const char *tracing_path_mount(void);
void tracing_path_set(const char *mountpoint);
const char *tracing_path_mount(void);
DIR *events_dir;
int cnt = 0;
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);
TEST_ASSERT_VAL("Can't open events dir", events_dir);
char evt_path[MAXPATHLEN];
char *dir_path;
char evt_path[MAXPATHLEN];
char *dir_path;
- sys_dir = opendir(tracing_events_path);
+ sys_dir = tracing_events__opendir();
if (!sys_dir)
return NULL;
if (!sys_dir)
return NULL;
DIR *events_dir;
int ret = 0;
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;
if (!events_dir) {
tracepoint_error(err, errno, sys_name, evt_name);
return -1;
bool evt_num_known = false;
restart:
bool evt_num_known = false;
restart:
- sys_dir = opendir(tracing_events_path);
+ sys_dir = tracing_events__opendir();
char evt_path[MAXPATHLEN];
char *dir_path;
char evt_path[MAXPATHLEN];
char *dir_path;
- sys_dir = opendir(tracing_events_path);
+ sys_dir = tracing_events__opendir();