xref: /netbsd-src/external/bsd/jemalloc.old/include/jemalloc/internal/jemalloc_internal_externs.h (revision 8e33eff89e26cf71871ead62f0d5063e1313c33a)
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