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