diff options
author | Jason Evans <jasone@canonware.com> | 2017-03-01 19:21:18 (GMT) |
---|---|---|
committer | Jason Evans <jasone@canonware.com> | 2017-03-03 03:43:06 (GMT) |
commit | d61a5f76b2e3bcd866e19ab90a59081c5fc917fa (patch) | |
tree | c9c4db65155f3fef5f3ef7764d7c234e8f3dfa90 /include/jemalloc | |
parent | ff55f07eb6cc775755ffbea406d8967ec5e13d6e (diff) | |
download | jemalloc-d61a5f76b2e3bcd866e19ab90a59081c5fc917fa.zip jemalloc-d61a5f76b2e3bcd866e19ab90a59081c5fc917fa.tar.gz jemalloc-d61a5f76b2e3bcd866e19ab90a59081c5fc917fa.tar.bz2 |
Convert arena_decay_t's time to be atomically synchronized.
Diffstat (limited to 'include/jemalloc')
-rw-r--r-- | include/jemalloc/internal/arena_externs.h | 2 | ||||
-rw-r--r-- | include/jemalloc/internal/arena_structs_b.h | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/include/jemalloc/internal/arena_externs.h b/include/jemalloc/internal/arena_externs.h index d97b6a7..7b16d22 100644 --- a/include/jemalloc/internal/arena_externs.h +++ b/include/jemalloc/internal/arena_externs.h @@ -39,7 +39,7 @@ void arena_extent_ralloc_large_shrink(tsdn_t *tsdn, arena_t *arena, extent_t *extent, size_t oldsize); void arena_extent_ralloc_large_expand(tsdn_t *tsdn, arena_t *arena, extent_t *extent, size_t oldsize); -ssize_t arena_decay_time_get(tsdn_t *tsdn, arena_t *arena); +ssize_t arena_decay_time_get(arena_t *arena); bool arena_decay_time_set(tsdn_t *tsdn, arena_t *arena, ssize_t decay_time); void arena_purge(tsdn_t *tsdn, arena_t *arena, bool all); void arena_maybe_purge(tsdn_t *tsdn, arena_t *arena); diff --git a/include/jemalloc/internal/arena_structs_b.h b/include/jemalloc/internal/arena_structs_b.h index 92f1e41..49fdd17 100644 --- a/include/jemalloc/internal/arena_structs_b.h +++ b/include/jemalloc/internal/arena_structs_b.h @@ -36,15 +36,22 @@ struct arena_bin_info_s { bitmap_info_t bitmap_info; }; +typedef union { + size_t u; /* Used for atomic operations. */ + ssize_t s; /* Time may be negative (means "never"). */ +} arena_decay_time_t; + struct arena_decay_s { - /* Synchronizes all fields. */ + /* Synchronizes all non-atomic fields. */ malloc_mutex_t mtx; /* * Approximate time in seconds from the creation of a set of unused * dirty pages until an equivalent set of unused dirty pages is purged * and/or reused. + * + * Synchronization: atomic. */ - ssize_t time; + arena_decay_time_t time; /* time / SMOOTHSTEP_NSTEPS. */ nstime_t interval; /* |