diff options
author | Jason Evans <jasone@canonware.com> | 2017-02-13 00:34:36 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2017-02-16 17:39:46 (GMT) |
commit | b779522b9b81f8a53a1f147968a890af8664b213 (patch) | |
tree | 521d6dee196f165912300b4b350179dc678de8c4 /src/arena.c | |
parent | 0721b895ffac734155956b8d3288c57234093c3a (diff) | |
download | jemalloc-b779522b9b81f8a53a1f147968a890af8664b213.zip jemalloc-b779522b9b81f8a53a1f147968a890af8664b213.tar.gz jemalloc-b779522b9b81f8a53a1f147968a890af8664b213.tar.bz2 |
Convert arena->dss_prec synchronization to atomics.
Diffstat (limited to 'src/arena.c')
-rw-r--r-- | src/arena.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/arena.c b/src/arena.c index 5905306..345c57d 100644 --- a/src/arena.c +++ b/src/arena.c @@ -1404,23 +1404,16 @@ arena_ralloc(tsdn_t *tsdn, arena_t *arena, extent_t *extent, void *ptr, } dss_prec_t -arena_dss_prec_get(tsdn_t *tsdn, arena_t *arena) { - dss_prec_t ret; - - malloc_mutex_lock(tsdn, &arena->lock); - ret = arena->dss_prec; - malloc_mutex_unlock(tsdn, &arena->lock); - return ret; +arena_dss_prec_get(arena_t *arena) { + return (dss_prec_t)atomic_read_u((unsigned *)&arena->dss_prec); } bool -arena_dss_prec_set(tsdn_t *tsdn, arena_t *arena, dss_prec_t dss_prec) { +arena_dss_prec_set(arena_t *arena, dss_prec_t dss_prec) { if (!have_dss) { return (dss_prec != dss_prec_disabled); } - malloc_mutex_lock(tsdn, &arena->lock); - arena->dss_prec = dss_prec; - malloc_mutex_unlock(tsdn, &arena->lock); + atomic_write_u((unsigned *)&arena->dss_prec, dss_prec); return false; } @@ -1442,7 +1435,7 @@ static void arena_basic_stats_merge_locked(arena_t *arena, unsigned *nthreads, const char **dss, ssize_t *decay_time, size_t *nactive, size_t *ndirty) { *nthreads += arena_nthreads_get(arena, false); - *dss = dss_prec_names[arena->dss_prec]; + *dss = dss_prec_names[arena_dss_prec_get(arena)]; *decay_time = arena->decay.time; *nactive += atomic_read_zu(&arena->nactive); *ndirty += extents_npages_get(&arena->extents_cached); |