perf thread_map: Create dummy constructor out of open coded equivalent
authorArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 10 Oct 2014 15:03:46 +0000 (12:03 -0300)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Tue, 14 Oct 2014 20:32:52 +0000 (17:32 -0300)
Create a dummy thread_map, one that has just one entry and it is -1,
meaning 'all threads', as this ends up going down to perf_event_open().

Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Borislav Petkov <bp@suse.de>
Cc: David Ahern <dsahern@gmail.com>
Cc: Don Zickus <dzickus@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Jean Pihet <jean.pihet@linaro.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/n/tip-8av26cz8uxmbnihl5mmrygp9@git.kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/thread_map.c
tools/perf/util/thread_map.h

index 5d32159121058cbd3e63a26f1fefbe8584224f7e..f93b9734735b9478d3b8da0a2edf6be03403079d 100644 (file)
@@ -214,6 +214,17 @@ out_free_threads:
        goto out;
 }
 
+struct thread_map *thread_map__new_dummy(void)
+{
+       struct thread_map *threads = malloc(sizeof(*threads) + sizeof(pid_t));
+
+       if (threads != NULL) {
+               threads->map[0] = -1;
+               threads->nr     = 1;
+       }
+       return threads;
+}
+
 static struct thread_map *thread_map__new_by_tid_str(const char *tid_str)
 {
        struct thread_map *threads = NULL, *nt;
@@ -224,14 +235,8 @@ static struct thread_map *thread_map__new_by_tid_str(const char *tid_str)
        struct strlist *slist;
 
        /* perf-stat expects threads to be generated even if tid not given */
-       if (!tid_str) {
-               threads = malloc(sizeof(*threads) + sizeof(pid_t));
-               if (threads != NULL) {
-                       threads->map[0] = -1;
-                       threads->nr     = 1;
-               }
-               return threads;
-       }
+       if (!tid_str)
+               return thread_map__new_dummy();
 
        slist = strlist__new(false, tid_str);
        if (!slist)
index 0cd8b3108084b9e0b27d94769b6f1f226f4a6e8a..95313f43cc0ffe5280b19a54fc9925ec4b83c498 100644 (file)
@@ -9,6 +9,7 @@ struct thread_map {
        pid_t map[];
 };
 
+struct thread_map *thread_map__new_dummy(void);
 struct thread_map *thread_map__new_by_pid(pid_t pid);
 struct thread_map *thread_map__new_by_tid(pid_t tid);
 struct thread_map *thread_map__new_by_uid(uid_t uid);