tools lib api fs tracing_path: Introduce opendir() method
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 7014e0e3bf9b0d0b6221eb7d2f8a1f690423dd73 Gitweb: https://git.kernel.org/tip/7014e0e3bf9b0d0b6221eb7d2f8a1f690423dd73 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 17 May 2018 14:42:39 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 17 May 2018 14:50:38 -0300
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 <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/lib/api/fs/tracing_path.c | 13 +++++++++++++ tools/lib/api/fs/tracing_path.h | 3 +++ tools/perf/tests/parse-events.c | 2 +- tools/perf/util/parse-events.c | 8 ++++---- 4 files changed, 21 insertions(+), 5 deletions(-)
tools/lib/api/fs/tracing_path.c +13 -0
@@ -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) {
tools/lib/api/fs/tracing_path.h +3 -0
@@ -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 );
tools/perf/tests/parse-events.c +1 -1
@@ -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);
tools/perf/util/parse-events.c +4 -4
@@ -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 ;