summaryrefslogtreecommitdiffstats
path: root/src/extent.c
diff options
context:
space:
mode:
authorQi Wang <interwq@gwu.edu>2017-06-02 23:27:05 (GMT)
committerQi Wang <interwq@gmail.com>2017-06-05 17:56:25 (GMT)
commit3a813946fb9b0ad93279ea30834df917b261a5a5 (patch)
tree47bf3ff155c1486631b8a48f08e64f1f1eddf777 /src/extent.c
parent530c07a45ba3ea744b280c9df5d94165839f7b09 (diff)
downloadjemalloc-3a813946fb9b0ad93279ea30834df917b261a5a5.zip
jemalloc-3a813946fb9b0ad93279ea30834df917b261a5a5.tar.gz
jemalloc-3a813946fb9b0ad93279ea30834df917b261a5a5.tar.bz2
Take background thread lock when setting extent hooks.
Diffstat (limited to 'src/extent.c')
-rw-r--r--src/extent.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/extent.c b/src/extent.c
index fb7a146..e95858e 100644
--- a/src/extent.c
+++ b/src/extent.c
@@ -197,8 +197,18 @@ extent_hooks_get(arena_t *arena) {
}
extent_hooks_t *
-extent_hooks_set(arena_t *arena, extent_hooks_t *extent_hooks) {
- return base_extent_hooks_set(arena->base, extent_hooks);
+extent_hooks_set(tsd_t *tsd, arena_t *arena, extent_hooks_t *extent_hooks) {
+ background_thread_info_t *info;
+ if (have_background_thread) {
+ info = arena_background_thread_info_get(arena);
+ malloc_mutex_lock(tsd_tsdn(tsd), &info->mtx);
+ }
+ extent_hooks_t *ret = base_extent_hooks_set(arena->base, extent_hooks);
+ if (have_background_thread) {
+ malloc_mutex_unlock(tsd_tsdn(tsd), &info->mtx);
+ }
+
+ return ret;
}
static void