aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/perf/builtin-annotate.c3
-rw-r--r--tools/perf/builtin-kmem.c1
-rw-r--r--tools/perf/builtin-report.c4
-rw-r--r--tools/perf/builtin-sched.c2
-rw-r--r--tools/perf/builtin-trace.c1
-rw-r--r--tools/perf/util/data_map.c16
-rw-r--r--tools/perf/util/thread.c12
-rw-r--r--tools/perf/util/thread.h1
8 files changed, 16 insertions, 24 deletions
diff --git a/tools/perf/builtin-annotate.c b/tools/perf/builtin-annotate.c
index 43e3bb354442..93d765a746f2 100644
--- a/tools/perf/builtin-annotate.c
+++ b/tools/perf/builtin-annotate.c
@@ -464,14 +464,11 @@ static int __cmd_annotate(void)
464{ 464{
465 struct perf_session *session = perf_session__new(input_name, O_RDONLY, 465 struct perf_session *session = perf_session__new(input_name, O_RDONLY,
466 force); 466 force);
467 struct thread *idle;
468 int ret; 467 int ret;
469 468
470 if (session == NULL) 469 if (session == NULL)
471 return -ENOMEM; 470 return -ENOMEM;
472 471
473 idle = register_idle_thread();
474
475 ret = perf_session__process_events(session, &event_ops, 0, 472 ret = perf_session__process_events(session, &event_ops, 0,
476 &event__cwdlen, &event__cwd); 473 &event__cwdlen, &event__cwd);
477 if (ret) 474 if (ret)
diff --git a/tools/perf/builtin-kmem.c b/tools/perf/builtin-kmem.c
index 6f74bd8d20e6..37a849906afe 100644
--- a/tools/perf/builtin-kmem.c
+++ b/tools/perf/builtin-kmem.c
@@ -372,7 +372,6 @@ static int read_events(void)
372 if (session == NULL) 372 if (session == NULL)
373 return -ENOMEM; 373 return -ENOMEM;
374 374
375 register_idle_thread();
376 err = perf_session__process_events(session, &event_ops, 0, 375 err = perf_session__process_events(session, &event_ops, 0,
377 &event__cwdlen, &event__cwd); 376 &event__cwdlen, &event__cwd);
378 perf_session__delete(session); 377 perf_session__delete(session);
diff --git a/tools/perf/builtin-report.c b/tools/perf/builtin-report.c
index c203eaf73a2f..4b37ac4f128b 100644
--- a/tools/perf/builtin-report.c
+++ b/tools/perf/builtin-report.c
@@ -761,7 +761,6 @@ static struct perf_event_ops event_ops = {
761 761
762static int __cmd_report(void) 762static int __cmd_report(void)
763{ 763{
764 struct thread *idle;
765 int ret; 764 int ret;
766 struct perf_session *session; 765 struct perf_session *session;
767 766
@@ -769,9 +768,6 @@ static int __cmd_report(void)
769 if (session == NULL) 768 if (session == NULL)
770 return -ENOMEM; 769 return -ENOMEM;
771 770
772 idle = register_idle_thread();
773 thread__comm_adjust(idle);
774
775 if (show_threads) 771 if (show_threads)
776 perf_read_values_init(&show_threads_values); 772 perf_read_values_init(&show_threads_values);
777 773
diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c
index b5b447236261..847ed51248b1 100644
--- a/tools/perf/builtin-sched.c
+++ b/tools/perf/builtin-sched.c
@@ -1670,8 +1670,6 @@ static int read_events(void)
1670 if (session == NULL) 1670 if (session == NULL)
1671 return -ENOMEM; 1671 return -ENOMEM;
1672 1672
1673 register_idle_thread();
1674
1675 err = perf_session__process_events(session, &event_ops, 0, 1673 err = perf_session__process_events(session, &event_ops, 0,
1676 &event__cwdlen, &event__cwd); 1674 &event__cwdlen, &event__cwd);
1677 perf_session__delete(session); 1675 perf_session__delete(session);
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c
index c404dece950d..40cb896581dd 100644
--- a/tools/perf/builtin-trace.c
+++ b/tools/perf/builtin-trace.c
@@ -125,7 +125,6 @@ static struct perf_event_ops event_ops = {
125 125
126static int __cmd_trace(struct perf_session *session) 126static int __cmd_trace(struct perf_session *session)
127{ 127{
128 register_idle_thread();
129 return perf_session__process_events(session, &event_ops, 0, 128 return perf_session__process_events(session, &event_ops, 0,
130 &event__cwdlen, &event__cwd); 129 &event__cwdlen, &event__cwd);
131} 130}
diff --git a/tools/perf/util/data_map.c b/tools/perf/util/data_map.c
index ba5bcfa1f908..36e3bfe73196 100644
--- a/tools/perf/util/data_map.c
+++ b/tools/perf/util/data_map.c
@@ -1,6 +1,7 @@
1#include "symbol.h" 1#include "symbol.h"
2#include "util.h" 2#include "util.h"
3#include "debug.h" 3#include "debug.h"
4#include "thread.h"
4#include "session.h" 5#include "session.h"
5 6
6static unsigned long mmap_window = 32; 7static unsigned long mmap_window = 32;
@@ -127,6 +128,18 @@ out:
127 return err; 128 return err;
128} 129}
129 130
131static struct thread *perf_session__register_idle_thread(struct perf_session *self __used)
132{
133 struct thread *thread = threads__findnew(0);
134
135 if (!thread || thread__set_comm(thread, "swapper")) {
136 pr_err("problem inserting idle task.\n");
137 thread = NULL;
138 }
139
140 return thread;
141}
142
130int perf_session__process_events(struct perf_session *self, 143int perf_session__process_events(struct perf_session *self,
131 struct perf_event_ops *ops, 144 struct perf_event_ops *ops,
132 int full_paths, int *cwdlen, char **cwd) 145 int full_paths, int *cwdlen, char **cwd)
@@ -140,6 +153,9 @@ int perf_session__process_events(struct perf_session *self,
140 uint32_t size; 153 uint32_t size;
141 char *buf; 154 char *buf;
142 155
156 if (perf_session__register_idle_thread(self) == NULL)
157 return -ENOMEM;
158
143 perf_event_ops__fill_defaults(ops); 159 perf_event_ops__fill_defaults(ops);
144 160
145 page_size = getpagesize(); 161 page_size = getpagesize();
diff --git a/tools/perf/util/thread.c b/tools/perf/util/thread.c
index b68a00ea4121..5c0ab14f3dba 100644
--- a/tools/perf/util/thread.c
+++ b/tools/perf/util/thread.c
@@ -161,18 +161,6 @@ struct thread *threads__findnew(pid_t pid)
161 return th; 161 return th;
162} 162}
163 163
164struct thread *register_idle_thread(void)
165{
166 struct thread *thread = threads__findnew(0);
167
168 if (!thread || thread__set_comm(thread, "swapper")) {
169 fprintf(stderr, "problem inserting idle task.\n");
170 exit(-1);
171 }
172
173 return thread;
174}
175
176static void map_groups__remove_overlappings(struct map_groups *self, 164static void map_groups__remove_overlappings(struct map_groups *self,
177 struct map *map) 165 struct map *map)
178{ 166{
diff --git a/tools/perf/util/thread.h b/tools/perf/util/thread.h
index 1751802a09ba..2e35e1f6bb43 100644
--- a/tools/perf/util/thread.h
+++ b/tools/perf/util/thread.h
@@ -24,7 +24,6 @@ void map_groups__init(struct map_groups *self);
24int thread__set_comm(struct thread *self, const char *comm); 24int thread__set_comm(struct thread *self, const char *comm);
25int thread__comm_len(struct thread *self); 25int thread__comm_len(struct thread *self);
26struct thread *threads__findnew(pid_t pid); 26struct thread *threads__findnew(pid_t pid);
27struct thread *register_idle_thread(void);
28void thread__insert_map(struct thread *self, struct map *map); 27void thread__insert_map(struct thread *self, struct map *map);
29int thread__fork(struct thread *self, struct thread *parent); 28int thread__fork(struct thread *self, struct thread *parent);
30size_t map_groups__fprintf_maps(struct map_groups *self, FILE *fp); 29size_t map_groups__fprintf_maps(struct map_groups *self, FILE *fp);