Convert arena_decay_t's time to be atomically synchronized.
This commit is contained in:
@@ -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);
|
||||
|
@@ -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;
|
||||
/*
|
||||
|
Reference in New Issue
Block a user