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