41b6afb834
Use FreeBSD-specific functions (_pthread_mutex_init_calloc_cb(), _malloc_{pre,post}fork()) to avoid bootstrapping issues due to allocation in libc and libthr. Add malloc_strtoumax() and use it instead of strtoul(). Disable validation code in malloc_vsnprintf() and malloc_strtoumax() until jemalloc is initialized. This is necessary because locale initialization causes allocation for both vsnprintf() and strtoumax(). Force the lazy-lock feature on in order to avoid pthread_self(), because it causes allocation. Use syscall(SYS_write, ...) rather than write(...), because libthr wraps write() and causes allocation. Without this workaround, it would not be possible to print error messages in malloc_conf_init() without substantially reworking bootstrapping. Fix choose_arena_hard() to look at how many threads are assigned to the candidate choice, rather than checking whether the arena is uninitialized. This bug potentially caused more arenas to be initialized than necessary. |
||
---|---|---|
.. | ||
arena.h | ||
atomic.h | ||
base.h | ||
bitmap.h | ||
chunk_dss.h | ||
chunk_mmap.h | ||
chunk.h | ||
ckh.h | ||
ctl.h | ||
extent.h | ||
hash.h | ||
huge.h | ||
jemalloc_internal.h.in | ||
mb.h | ||
mutex.h | ||
private_namespace.h | ||
prng.h | ||
prof.h | ||
ql.h | ||
qr.h | ||
rb.h | ||
rtree.h | ||
size_classes.sh | ||
stats.h | ||
tcache.h | ||
tsd.h | ||
util.h | ||
zone.h |