1*8e33eff8Schristos #ifndef JEMALLOC_INTERNAL_EXTERNS_H 2*8e33eff8Schristos #define JEMALLOC_INTERNAL_EXTERNS_H 3*8e33eff8Schristos 4*8e33eff8Schristos #include "jemalloc/internal/atomic.h" 5*8e33eff8Schristos #include "jemalloc/internal/size_classes.h" 6*8e33eff8Schristos #include "jemalloc/internal/tsd_types.h" 7*8e33eff8Schristos 8*8e33eff8Schristos /* TSD checks this to set thread local slow state accordingly. */ 9*8e33eff8Schristos extern bool malloc_slow; 10*8e33eff8Schristos 11*8e33eff8Schristos /* Run-time options. */ 12*8e33eff8Schristos extern bool opt_abort; 13*8e33eff8Schristos extern bool opt_abort_conf; 14*8e33eff8Schristos extern const char *opt_junk; 15*8e33eff8Schristos extern bool opt_junk_alloc; 16*8e33eff8Schristos extern bool opt_junk_free; 17*8e33eff8Schristos extern bool opt_utrace; 18*8e33eff8Schristos extern bool opt_xmalloc; 19*8e33eff8Schristos extern bool opt_zero; 20*8e33eff8Schristos extern unsigned opt_narenas; 21*8e33eff8Schristos 22*8e33eff8Schristos /* Number of CPUs. */ 23*8e33eff8Schristos extern unsigned ncpus; 24*8e33eff8Schristos 25*8e33eff8Schristos /* Number of arenas used for automatic multiplexing of threads and arenas. */ 26*8e33eff8Schristos extern unsigned narenas_auto; 27*8e33eff8Schristos 28*8e33eff8Schristos /* 29*8e33eff8Schristos * Arenas that are used to service external requests. Not all elements of the 30*8e33eff8Schristos * arenas array are necessarily used; arenas are created lazily as needed. 31*8e33eff8Schristos */ 32*8e33eff8Schristos extern atomic_p_t arenas[]; 33*8e33eff8Schristos 34*8e33eff8Schristos void *a0malloc(size_t size); 35*8e33eff8Schristos void a0dalloc(void *ptr); 36*8e33eff8Schristos void *bootstrap_malloc(size_t size); 37*8e33eff8Schristos void *bootstrap_calloc(size_t num, size_t size); 38*8e33eff8Schristos void bootstrap_free(void *ptr); 39*8e33eff8Schristos void arena_set(unsigned ind, arena_t *arena); 40*8e33eff8Schristos unsigned narenas_total_get(void); 41*8e33eff8Schristos arena_t *arena_init(tsdn_t *tsdn, unsigned ind, extent_hooks_t *extent_hooks); 42*8e33eff8Schristos arena_tdata_t *arena_tdata_get_hard(tsd_t *tsd, unsigned ind); 43*8e33eff8Schristos arena_t *arena_choose_hard(tsd_t *tsd, bool internal); 44*8e33eff8Schristos void arena_migrate(tsd_t *tsd, unsigned oldind, unsigned newind); 45*8e33eff8Schristos void iarena_cleanup(tsd_t *tsd); 46*8e33eff8Schristos void arena_cleanup(tsd_t *tsd); 47*8e33eff8Schristos void arenas_tdata_cleanup(tsd_t *tsd); 48*8e33eff8Schristos void jemalloc_prefork(void); 49*8e33eff8Schristos void jemalloc_postfork_parent(void); 50*8e33eff8Schristos void jemalloc_postfork_child(void); 51*8e33eff8Schristos bool malloc_initialized(void); 52*8e33eff8Schristos 53*8e33eff8Schristos #endif /* JEMALLOC_INTERNAL_EXTERNS_H */ 54