diff options
author | Ingo Molnar <mingo@elte.hu> | 2010-07-01 02:49:28 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2010-07-01 03:31:25 -0400 |
commit | 0a54cec0c25cc49e3b68b14c205f1f6cff13f5e1 (patch) | |
tree | eb4e63ee9ae1fcaf9aa53a1668e55c09516052d9 /tools/perf/util/session.c | |
parent | ec8c27e04f89a7575ca2c4facb99152e03d6a99c (diff) | |
parent | 980019d74e4b2428362b36a0506519d6d9460800 (diff) |
Merge branch 'linus' into core/rcu
Conflicts:
fs/fs-writeback.c
Merge reason: Resolve the conflict
Note, i picked the version from Linus's tree, which effectively reverts
the fs-writeback.c bits of:
b97181f: fs: remove all rcu head initializations, except on_stack initializations
As the upstream changes to this file changed this code heavily and the
first attempt to resolve the conflict resulted in a non-booting kernel.
It's safer to re-try this portion of the commit cleanly.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
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)) |