perf tools: Reuse the path to the tracepoint /events/ directory
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: c02cab228e44aacf161642b63779971f8e39993b Gitweb: https://git.kernel.org/tip/c02cab228e44aacf161642b63779971f8e39993b Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 17 May 2018 14:22:37 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 17 May 2018 14:25:07 -0300
perf tools: Reuse the path to the tracepoint /events/ directory
When using for_each_event() we needlessly rebuild the whole path to the tracepoint directory, reuse the dir_path instead, saving some cycles and reducing the size of the next patch.
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/perf/util/parse-events.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-)
tools/perf/util/parse-events.c +7 -8
@@ -156,13 +156,12 @@ struct event_symbol event_symbols_sw[PERF_COUNT_SW_MAX] = { (strcmp(sys_dirent->d_name, ".")) && \ (strcmp(sys_dirent->d_name, ".."))) -static int tp_event_has_id (struct dirent *sys_dir,struct dirent *evt_dir) +static int tp_event_has_id (const char *dir_path,struct dirent *evt_dir) {char evt_path[MAXPATHLEN ];int fd; -snprintf (evt_path,MAXPATHLEN ,"%s/%s/%s/id" , tracing_events_path, - sys_dir->d_name, evt_dir->d_name); +snprintf (evt_path,MAXPATHLEN ,"%s/%s/id" , dir_path, evt_dir->d_name); fd =open (evt_path,O_RDONLY );if (fd <0 )return -EINVAL ;
@@ -171,12 +170,12 @@ static int tp_event_has_id(struct dirent *sys_dir, struct dirent *evt_dir)return 0 ; } -#define for_each_event (sys_dirent, evt_dir, evt_dirent) \ +#define for_each_event (dir_path, evt_dir, evt_dirent) \ while ((evt_dirent = readdir(evt_dir)) != NULL) \ if (evt_dirent->d_type == DT_DIR && \ (strcmp(evt_dirent->d_name, ".")) && \ (strcmp(evt_dirent->d_name, "..")) && \ - (!tp_event_has_id(sys_dirent, evt_dirent))) + (!tp_event_has_id(dir_path, evt_dirent)))#define MAX_EVENT_LENGTH 512
@@ -204,7 +203,7 @@ struct tracepoint_path *tracepoint_id_to_path(u64 config)if (!evt_dir)continue ; -for_each_event (sys_dirent, evt_dir, evt_dirent) { +for_each_event (dir_path, evt_dir, evt_dirent) {scnprintf (evt_path,MAXPATHLEN ,"%s/%s/id" , dir_path, evt_dirent->d_name);
@@ -2119,7 +2118,7 @@ restart:if (!evt_dir)continue ; -for_each_event (sys_dirent, evt_dir, evt_dirent) { +for_each_event (dir_path, evt_dir, evt_dirent) {if (event_glob !=NULL && !strglobmatch (evt_dirent->d_name, event_glob))continue ;
@@ -2199,7 +2198,7 @@ int is_valid_tracepoint(const char *event_string)if (!evt_dir)continue ; -for_each_event (sys_dirent, evt_dir, evt_dirent) { +for_each_event (dir_path, evt_dir, evt_dirent) {snprintf (evt_path,MAXPATHLEN ,"%s:%s" , sys_dirent->d_name, evt_dirent->d_name);if (!strcmp (evt_path, event_string)) {