]> git.karo-electronics.de Git - linux-beck.git/blobdiff - tools/perf/util/data_map.c
perf session: Register the idle thread in perf_session__process_events
[linux-beck.git] / tools / perf / util / data_map.c
index ba5bcfa1f9087b9129e640e0343838f918d75130..36e3bfe73196ab3d887d23d2b89635c824deac14 100644 (file)
@@ -1,6 +1,7 @@
 #include "symbol.h"
 #include "util.h"
 #include "debug.h"
+#include "thread.h"
 #include "session.h"
 
 static unsigned long   mmap_window = 32;
@@ -127,6 +128,18 @@ out:
        return err;
 }
 
+static struct thread *perf_session__register_idle_thread(struct perf_session *self __used)
+{
+       struct thread *thread = threads__findnew(0);
+
+       if (!thread || thread__set_comm(thread, "swapper")) {
+               pr_err("problem inserting idle task.\n");
+               thread = NULL;
+       }
+
+       return thread;
+}
+
 int perf_session__process_events(struct perf_session *self,
                                 struct perf_event_ops *ops,
                                 int full_paths, int *cwdlen, char **cwd)
@@ -140,6 +153,9 @@ int perf_session__process_events(struct perf_session *self,
        uint32_t size;
        char *buf;
 
+       if (perf_session__register_idle_thread(self) == NULL)
+               return -ENOMEM;
+
        perf_event_ops__fill_defaults(ops);
 
        page_size = getpagesize();