diff options
| author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2009-12-13 16:50:26 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-12-14 10:57:15 -0500 |
| commit | 13df45ca1c9a430d5f53862854070fcc324e015c (patch) | |
| tree | d20c0bfe5d0caedb2f2dd1f0959255127a7e9a26 /tools | |
| parent | 301a0b020210360c6e441c7765521248bc87d58e (diff) | |
perf session: Register the idle thread in perf_session__process_events
No need for all tools to register it and then immediately call
perf_session__process_events.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>
LKML-Reference: <1260741029-4430-3-git-send-email-acme@infradead.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'tools')
| -rw-r--r-- | tools/perf/builtin-annotate.c | 3 | ||||
| -rw-r--r-- | tools/perf/builtin-kmem.c | 1 | ||||
| -rw-r--r-- | tools/perf/builtin-report.c | 4 | ||||
| -rw-r--r-- | tools/perf/builtin-sched.c | 2 | ||||
| -rw-r--r-- | tools/perf/builtin-trace.c | 1 | ||||
| -rw-r--r-- | tools/perf/util/data_map.c | 16 | ||||
| -rw-r--r-- | tools/perf/util/thread.c | 12 | ||||
| -rw-r--r-- | tools/perf/util/thread.h | 1 |
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 | ||
| 762 | static int __cmd_report(void) | 762 | static 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 | ||
| 126 | static int __cmd_trace(struct perf_session *session) | 126 | static 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 | ||
| 6 | static unsigned long mmap_window = 32; | 7 | static unsigned long mmap_window = 32; |
| @@ -127,6 +128,18 @@ out: | |||
| 127 | return err; | 128 | return err; |
| 128 | } | 129 | } |
| 129 | 130 | ||
| 131 | static 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 | |||
| 130 | int perf_session__process_events(struct perf_session *self, | 143 | int 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 | ||
| 164 | struct 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 | |||
| 176 | static void map_groups__remove_overlappings(struct map_groups *self, | 164 | static 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); | |||
| 24 | int thread__set_comm(struct thread *self, const char *comm); | 24 | int thread__set_comm(struct thread *self, const char *comm); |
| 25 | int thread__comm_len(struct thread *self); | 25 | int thread__comm_len(struct thread *self); |
| 26 | struct thread *threads__findnew(pid_t pid); | 26 | struct thread *threads__findnew(pid_t pid); |
| 27 | struct thread *register_idle_thread(void); | ||
| 28 | void thread__insert_map(struct thread *self, struct map *map); | 27 | void thread__insert_map(struct thread *self, struct map *map); |
| 29 | int thread__fork(struct thread *self, struct thread *parent); | 28 | int thread__fork(struct thread *self, struct thread *parent); |
| 30 | size_t map_groups__fprintf_maps(struct map_groups *self, FILE *fp); | 29 | size_t map_groups__fprintf_maps(struct map_groups *self, FILE *fp); |
