Skip to content
  • Jason Evans's avatar
    Port to FreeBSD. · 41b6afb8
    Jason Evans authored
    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.
    41b6afb8