server-skynet-source-3rd-je.../test/unit
David Goldblatt 3f685e8824 Protect the rtree/extent interactions with a mutex pool.
Instead of embedding a lock bit in rtree leaf elements, we associate extents
with a small set of mutexes.  This gets us two things:

- We can use the system mutexes.  This (hypothetically) protects us from
  priority inversion, and lets us stop doing a backoff/sleep loop, instead
  opting for precise wakeups from the mutex.
- Cuts down on the number of mutex acquisitions we have to do (from 4 in the
  worst case to two).

We end up simplifying most of the rtree code (which no longer has to deal with
locking or concurrency at all), at the cost of additional complexity in the
extent code: since the mutex protecting the rtree leaf elements is determined by
reading the extent out of those elements, the initial read is racy, so that we
may acquire an out of date mutex.  We re-check the extent in the leaf after
acquiring the mutex to protect us from this race.
2017-05-19 14:21:27 -07:00
..
a0.c Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
arena_reset_prof.c Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
arena_reset_prof.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
arena_reset.c Add extent_destroy_t and use it during arena destruction. 2017-04-29 09:24:12 -07:00
atomic.c Remove the pre-C11-atomics API, which is now unused 2017-04-05 16:25:37 -07:00
base.c Add extent_destroy_t and use it during arena destruction. 2017-04-29 09:24:12 -07:00
bit_util.c Header refactoring: move bit_util.h out of the catchall 2017-04-18 18:35:03 -07:00
bitmap.c Revert "Remove BITMAP_USE_TREE." 2017-04-18 19:01:04 -07:00
ckh.c Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
decay.c Refactor *decay_time into *decay_ms. 2017-05-18 11:33:45 -07:00
decay.sh Refactor *decay_time into *decay_ms. 2017-05-18 11:33:45 -07:00
extent_quantize.c Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
fork.c Fix arena_prefork lock rank order for witness. 2017-03-08 23:07:27 -08:00
hash.c Header refactoring: hash - unify and remove from catchall. 2017-04-25 09:51:38 -07:00
hooks.c Add hooking functionality 2017-04-07 14:10:27 -07:00
junk_alloc.c Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
junk_alloc.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
junk_free.c Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
junk_free.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
junk.c Header refactoring: move util.h out of the catchall 2017-04-18 18:35:03 -07:00
junk.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
mallctl.c Refactor *decay_time into *decay_ms. 2017-05-18 11:33:45 -07:00
malloc_io.c Disentangle assert and util 2017-03-06 15:08:43 -08:00
math.c Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
mq.c Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
mtx.c Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
nstime.c Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
pack.c Support --with-lg-page values larger than system page size. 2017-04-18 19:01:04 -07:00
pack.sh Refactor *decay_time into *decay_ms. 2017-05-18 11:33:45 -07:00
pages.c Support --with-lg-page values larger than system page size. 2017-04-18 19:01:04 -07:00
ph.c Header refactoring: break out ph.h dependencies 2017-04-11 11:52:30 -07:00
prng.c Convert prng module to use C11-style atomics 2017-04-04 16:45:52 -07:00
prof_accum.c Add hooking functionality 2017-04-07 14:10:27 -07:00
prof_accum.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
prof_active.c Add hooking functionality 2017-04-07 14:10:27 -07:00
prof_active.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
prof_gdump.c Add hooking functionality 2017-04-07 14:10:27 -07:00
prof_gdump.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
prof_idump.c Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
prof_idump.sh Remove --disable-tcache. 2017-04-21 10:06:12 -07:00
prof_reset.c Add hooking functionality 2017-04-07 14:10:27 -07:00
prof_reset.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
prof_tctx.c Pass alloc_ctx down profiling path. 2017-04-12 13:55:39 -07:00
prof_tctx.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
prof_thread_name.c Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
prof_thread_name.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
ql.c Header refactoring: break out ql.h dependencies 2017-04-11 11:52:30 -07:00
qr.c Header refactoring: break out qr.h dependencies 2017-04-11 11:52:30 -07:00
rb.c Header refactoring: break out rb.h dependencies 2017-04-11 11:52:30 -07:00
rtree.c Protect the rtree/extent interactions with a mutex pool. 2017-05-19 14:21:27 -07:00
SFMT.c Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
size_classes.c Remove extraneous parens around return arguments. 2017-01-20 21:43:07 -08:00
slab.c Convert extent_t's usize to szind. 2017-03-22 18:33:32 -07:00
smoothstep.c Replace tabs following #define with spaces. 2017-01-20 21:45:53 -08:00
spin.c Enhance spin_adaptive() to yield after several iterations. 2017-02-08 18:50:03 -08:00
stats_print.c Header refactoring: move util.h out of the catchall 2017-04-18 18:35:03 -07:00
stats.c Remove --disable-tcache. 2017-04-21 10:06:12 -07:00
ticker.c Header refactoring: ticker module - remove from the catchall and unify. 2017-04-24 10:33:21 -07:00
tsd.c Header refactoring: tsd - cleanup and dependency breaking. 2017-05-01 10:49:56 -07:00
witness.c Add witness_assert_depth[_to_rank](). 2017-02-01 16:43:46 -08:00
zero.c Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00
zero.sh Use MALLOC_CONF rather than malloc_conf for tests. 2017-02-23 08:57:02 -08:00