perf strlist: Make dupstr be the default and part of an extensible config parm
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 4a77e2183fc0260c0efc7adeccf933fef893ad5f Gitweb: http://git.kernel.org/tip/4a77e2183fc0260c0efc7adeccf933fef893ad5f Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Mon, 20 Jul 2015 12:13:34 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Mon, 20 Jul 2015 12:13:34 -0300
perf strlist: Make dupstr be the default and part of an extensible config parm
So that we can pass more info to strlist__new() without having to change its function signature, just adding entries to the strlist_config struct with sensible defaults for when those fields are not specified.
Cc Adrian Hunter <[email protected]>
Cc Borislav Petkov <[email protected]>
Cc David Ahern <[email protected]>
Cc Frederic Weisbecker <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Stephane Eranian <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/builtin-buildid-cache.c | 8 ++++---- tools/perf/builtin-trace.c | 2 +- tools/perf/util/build-id.c | 2 +- tools/perf/util/machine.c | 2 +- tools/perf/util/probe-event.c | 4 ++-- tools/perf/util/probe-finder.c | 2 +- tools/perf/util/strlist.c | 4 ++-- tools/perf/util/strlist.h | 6 +++++- tools/perf/util/symbol.c | 2 +- tools/perf/util/thread_map.c | 6 ++++-- 10 files changed, 22 insertions(+), 16 deletions(-)
tools/perf/builtin-buildid-cache.c +4 -4
@@ -363,7 +363,7 @@ int cmd_buildid_cache(int argc, const char **argv,setup_pager ();if (add_name_list_str) { - list =strlist__new (true, add_name_list_str); + list =strlist__new (add_name_list_str,NULL );if (list) {strlist__for_each (pos, list)if (build_id_cache__add_file (pos->s)) {
@@ -381,7 +381,7 @@ int cmd_buildid_cache(int argc, const char **argv, }if (remove_name_list_str) { - list =strlist__new (true, remove_name_list_str); + list =strlist__new (remove_name_list_str,NULL );if (list) {strlist__for_each (pos, list)if (build_id_cache__remove_file (pos->s)) {
@@ -399,7 +399,7 @@ int cmd_buildid_cache(int argc, const char **argv, }if (purge_name_list_str) { - list =strlist__new (true, purge_name_list_str); + list =strlist__new (purge_name_list_str,NULL );if (list) {strlist__for_each (pos, list)if (build_id_cache__purge_path (pos->s)) {
@@ -420,7 +420,7 @@ int cmd_buildid_cache(int argc, const char **argv, ret =build_id_cache__fprintf_missing (session, stdout);if (update_name_list_str) { - list =strlist__new (true, update_name_list_str); + list =strlist__new (update_name_list_str,NULL );if (list) {strlist__for_each (pos, list)if (build_id_cache__update_file (pos->s)) {
tools/perf/builtin-trace.c +1 -1
@@ -2931,7 +2931,7 @@ int cmd_trace(int argc, const char **argv, const char *prefix __maybe_unused) trace.not_ev_qualifier = *s =='!' ;if (trace.not_ev_qualifier) ++s; - trace.ev_qualifier =strlist__new (true, s); + trace.ev_qualifier =strlist__new (s,NULL );if (trace.ev_qualifier ==NULL ) {fputs ("Not enough memory to parse event qualifier" , trace.output);
tools/perf/util/build-id.c +1 -1
@@ -291,7 +291,7 @@ int build_id_cache__list_build_ids(const char *pathname,struct dirent *d;int ret =0 ; - list =strlist__new (true,NULL ); + list =strlist__new (NULL ,NULL ); dir_name =build_id_cache__dirname_from_path (pathname, false, false);if (!list || !dir_name) { ret = -ENOMEM ;
tools/perf/util/machine.c +1 -1
@@ -250,7 +250,7 @@ struct machine *machines__findnew(struct machines *machines, pid_t pid)static struct strlist *seen;if (!seen) - seen =strlist__new (true,NULL ); + seen =strlist__new (NULL ,NULL );if (!strlist__has_entry (seen, path)) {pr_err ("Can't access file %s\n" , path);
tools/perf/util/probe-event.c +2 -2
@@ -2066,7 +2066,7 @@ static struct strlist *get_probe_trace_command_rawlist(int fd)char *p;struct strlist *sl; - sl =strlist__new (true,NULL ); + sl =strlist__new (NULL ,NULL ); fp =fdopen (dup (fd),"r" );while (!feof (fp)) {
@@ -2362,7 +2362,7 @@ static struct strlist *get_probe_trace_event_names(int fd, bool include_group) rawlist =get_probe_trace_command_rawlist (fd);if (!rawlist)return NULL ; - sl =strlist__new (true,NULL ); + sl =strlist__new (NULL ,NULL );strlist__for_each (ent, rawlist) { ret =parse_probe_trace_command (ent->s, &tev);if (ret <0 )
tools/perf/util/probe-finder.c +1 -1
@@ -1355,7 +1355,7 @@ static int add_available_vars(Dwarf_Die *sc_die, struct probe_finder *pf) vl->point.offset);/* Find local variables */ - vl->vars =strlist__new (true,NULL ); + vl->vars =strlist__new (NULL ,NULL );if (vl->vars ==NULL )return -ENOMEM ; af->child = true;
tools/perf/util/strlist.c +2 -2
@@ -133,7 +133,7 @@ int strlist__parse_list(struct strlist *slist, const char *s)return *s ?strlist__parse_list_entry (slist, s) :0 ; } -struct strlist *strlist__new (bool dupstr,const char *list) +struct strlist *strlist__new (const char *list,const struct strlist_config *config) {struct strlist *slist =malloc (sizeof (*slist));
@@ -143,7 +143,7 @@ struct strlist *strlist__new(bool dupstr, const char *list) slist->rblist.node_new = strlist__node_new; slist->rblist.node_delete = strlist__node_delete; - slist->dupstr = dupstr; + slist->dupstr = config ? !config->dont_dupstr : true;if (list &&strlist__parse_list (slist, list) !=0 ) goto out_error; }
tools/perf/util/strlist.h +5 -1
@@ -16,7 +16,11 @@ struct strlist {bool dupstr; }; -struct strlist *strlist__new (bool dupstr,const char *slist); +struct strlist_config { +bool dont_dupstr; +}; + +struct strlist *strlist__new (const char *slist,const struct strlist_config *config);void strlist__delete (struct strlist *slist);void strlist__remove (struct strlist *slist,struct str_node *sn);
tools/perf/util/symbol.c +1 -1
@@ -1906,7 +1906,7 @@ int setup_list(struct strlist **list, const char *list_str,if (list_str ==NULL )return 0 ; - *list =strlist__new (true, list_str); + *list =strlist__new (list_str,NULL );if (!*list) {pr_err ("problems parsing %s list\n" , list_name);return -1 ;
tools/perf/util/thread_map.c +4 -2
@@ -196,7 +196,8 @@ static struct thread_map *thread_map__new_by_pid_str(const char *pid_str)pid_t pid, prev_pid =INT_MAX ;char *end_ptr;struct str_node *pos; -struct strlist *slist =strlist__new (false, pid_str); +struct strlist_config slist_config = { .dont_dupstr = true, }; +struct strlist *slist =strlist__new (pid_str, &slist_config);if (!slist)return NULL ;
@@ -266,13 +267,14 @@ static struct thread_map *thread_map__new_by_tid_str(const char *tid_str)pid_t tid, prev_tid =INT_MAX ;char *end_ptr;struct str_node *pos; +struct strlist_config slist_config = { .dont_dupstr = true, };struct strlist *slist;/* perf-stat expects threads to be generated even if tid not given */ if (!tid_str)return thread_map__new_dummy (); - slist =strlist__new (false, tid_str); + slist =strlist__new (tid_str, &slist_config);if (!slist)return NULL ;