diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-06-28 15:24:43 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-06-28 15:24:43 -0400 |
commit | 5904b3b81d25166e5e39b9727645bb47937618e3 (patch) | |
tree | 2a306f8b0cdea354b3ebc157623dededcf471091 /tools/perf/util/session.c | |
parent | f3866db8f7534ba8bbb342bebcf5ede542035528 (diff) | |
parent | b70e4f0529c089b00d0a6da13106db4de1ada4c7 (diff) |
Merge branch 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
* 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
tracing: Fix undeclared ENOSYS in include/linux/tracepoint.h
perf record: prevent kill(0, SIGTERM);
perf session: Remove threads from tree on PERF_RECORD_EXIT
perf/tracing: Fix regression of perf losing kprobe events
perf_events: Fix Intel Westmere event constraints
perf record: Don't call newt functions when not initialized
Diffstat (limited to 'tools/perf/util/session.c')
-rw-r--r-- | tools/perf/util/session.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/tools/perf/util/session.c b/tools/perf/util/session.c index 8f83a1835766..c422cd676313 100644 --- a/tools/perf/util/session.c +++ b/tools/perf/util/session.c | |||
@@ -90,6 +90,7 @@ struct perf_session *perf_session__new(const char *filename, int mode, bool forc | |||
90 | 90 | ||
91 | memcpy(self->filename, filename, len); | 91 | memcpy(self->filename, filename, len); |
92 | self->threads = RB_ROOT; | 92 | self->threads = RB_ROOT; |
93 | INIT_LIST_HEAD(&self->dead_threads); | ||
93 | self->hists_tree = RB_ROOT; | 94 | self->hists_tree = RB_ROOT; |
94 | self->last_match = NULL; | 95 | self->last_match = NULL; |
95 | self->mmap_window = 32; | 96 | self->mmap_window = 32; |
@@ -131,6 +132,16 @@ void perf_session__delete(struct perf_session *self) | |||
131 | free(self); | 132 | free(self); |
132 | } | 133 | } |
133 | 134 | ||
135 | void perf_session__remove_thread(struct perf_session *self, struct thread *th) | ||
136 | { | ||
137 | rb_erase(&th->rb_node, &self->threads); | ||
138 | /* | ||
139 | * We may have references to this thread, for instance in some hist_entry | ||
140 | * instances, so just move them to a separate list. | ||
141 | */ | ||
142 | list_add_tail(&th->node, &self->dead_threads); | ||
143 | } | ||
144 | |||
134 | static bool symbol__match_parent_regex(struct symbol *sym) | 145 | static bool symbol__match_parent_regex(struct symbol *sym) |
135 | { | 146 | { |
136 | if (sym->name && !regexec(&parent_regex, sym->name, 0, NULL, 0)) | 147 | if (sym->name && !regexec(&parent_regex, sym->name, 0, NULL, 0)) |