server-skynet-source-3rd-je.../include/jemalloc/internal
Jason Evans d27f29b468 Disentangle arena and extent locking.
Refactor arena and extent locking protocols such that arena and
extent locks are never held when calling into the extent_*_wrapper()
API.  This requires extra care during purging since the arena lock no
longer protects the inner purging logic.  It also requires extra care to
protect extents from being merged with adjacent extents.

Convert extent_t's 'active' flag to an enumerated 'state', so that
retained extents are explicitly marked as such, rather than depending on
ring linkage state.

Refactor the extent collections (and their synchronization) for cached
and retained extents into extents_t.  Incorporate LRU functionality to
support purging.  Incorporate page count accounting, which replaces
arena->ndirty and arena->stats.retained.

Assert that no core locks are held when entering any internal
[de]allocation functions.  This is in addition to existing assertions
that no locks are held when entering external [de]allocation functions.

Audit and document synchronization protocols for all arena_t fields.

This fixes a potential deadlock due to recursive allocation during
gdump, in a similar fashion to b49c649bc1
(Fix lock order reversal during gdump.), but with a necessarily much
broader code impact.
2017-02-01 16:43:46 -08:00
..
arena_externs.h Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
arena_inlines_a.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
arena_inlines_b.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
arena_structs_a.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
arena_structs_b.h Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
arena_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
assert.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
atomic_externs.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
atomic_inlines.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
base_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
base_inlines.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
base_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
base_types.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
bitmap_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
bitmap_inlines.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
bitmap_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
bitmap_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
ckh_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
ckh_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
ckh_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
ctl_externs.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
ctl_structs.h Fix --disable-stats support. 2017-01-19 18:31:07 -08:00
ctl_types.h Fix --disable-stats support. 2017-01-19 18:31:07 -08:00
extent_dss_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
extent_dss_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
extent_dss_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
extent_externs.h Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
extent_inlines.h Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
extent_mmap_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
extent_structs.h Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
extent_types.h Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
hash_inlines.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
jemalloc_internal_decls.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
jemalloc_internal_defs.h.in Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
jemalloc_internal_macros.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
jemalloc_internal.h.in Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
large_externs.h Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
mutex_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
mutex_inlines.h Update brace style. 2017-01-20 21:43:07 -08:00
mutex_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
mutex_types.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
nstime_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
nstime_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
nstime_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
pages_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
pages_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
ph.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
private_namespace.sh Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
private_symbols.txt Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
private_unnamespace.sh Refactor to support more varied testing. 2013-12-03 22:06:59 -08:00
prng_inlines.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
prng_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
prof_externs.h Fix prof_realloc() regression. 2017-01-17 15:16:37 -08:00
prof_inlines.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
prof_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
prof_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
public_namespace.sh Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
public_unnamespace.sh Fix name mangling for stress tests. 2014-01-16 17:38:01 -08:00
ql.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
qr.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
rb.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
rtree_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
rtree_inlines.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
rtree_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
rtree_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
size_classes.sh Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
smoothstep.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
smoothstep.sh Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
spin_inlines.h Update brace style. 2017-01-20 21:43:07 -08:00
spin_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
spin_types.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
stats_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
stats_structs.h Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00
stats_types.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
tcache_externs.h Fix/refactor tcaches synchronization. 2017-02-01 16:43:46 -08:00
tcache_inlines.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
tcache_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
tcache_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
ticker_inlines.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
ticker_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
ticker_types.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
tsd_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
tsd_inlines.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
tsd_structs.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
tsd_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
util_externs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
util_inlines.h Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
util_types.h Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
witness_externs.h Add witness_assert_depth[_to_rank](). 2017-02-01 16:43:46 -08:00
witness_inlines.h Add witness_assert_depth[_to_rank](). 2017-02-01 16:43:46 -08:00
witness_structs.h Break up headers into constituent parts 2017-01-12 15:43:51 -08:00
witness_types.h Disentangle arena and extent locking. 2017-02-01 16:43:46 -08:00