fb327368db
This change pulls the SEC options into a struct, which simplifies their handling across various modules (e.g. PA needs to forward on SEC options from the malloc_conf string, but it doesn't really need to know their names). While we're here, make some of the fixed constants configurable, and unify naming from the configuration options to the internals.
72 lines
2.3 KiB
C
72 lines
2.3 KiB
C
#ifndef JEMALLOC_INTERNAL_EXTERNS_H
|
|
#define JEMALLOC_INTERNAL_EXTERNS_H
|
|
|
|
#include "jemalloc/internal/atomic.h"
|
|
#include "jemalloc/internal/hpa_opts.h"
|
|
#include "jemalloc/internal/sec_opts.h"
|
|
#include "jemalloc/internal/tsd_types.h"
|
|
#include "jemalloc/internal/nstime.h"
|
|
|
|
/* TSD checks this to set thread local slow state accordingly. */
|
|
extern bool malloc_slow;
|
|
|
|
/* Run-time options. */
|
|
extern bool opt_abort;
|
|
extern bool opt_abort_conf;
|
|
extern bool opt_trust_madvise;
|
|
extern bool opt_confirm_conf;
|
|
extern bool opt_hpa;
|
|
extern hpa_shard_opts_t opt_hpa_opts;
|
|
extern sec_opts_t opt_hpa_sec_opts;
|
|
|
|
extern const char *opt_junk;
|
|
extern bool opt_junk_alloc;
|
|
extern bool opt_junk_free;
|
|
extern void (*junk_free_callback)(void *ptr, size_t size);
|
|
extern void (*junk_alloc_callback)(void *ptr, size_t size);
|
|
extern bool opt_utrace;
|
|
extern bool opt_xmalloc;
|
|
extern bool opt_zero;
|
|
extern unsigned opt_narenas;
|
|
extern zero_realloc_action_t opt_zero_realloc_action;
|
|
extern malloc_init_t malloc_init_state;
|
|
extern const char *zero_realloc_mode_names[];
|
|
extern atomic_zu_t zero_realloc_count;
|
|
extern bool opt_cache_oblivious;
|
|
|
|
/* Number of CPUs. */
|
|
extern unsigned ncpus;
|
|
|
|
/* Number of arenas used for automatic multiplexing of threads and arenas. */
|
|
extern unsigned narenas_auto;
|
|
|
|
/* Base index for manual arenas. */
|
|
extern unsigned manual_arena_base;
|
|
|
|
/*
|
|
* Arenas that are used to service external requests. Not all elements of the
|
|
* arenas array are necessarily used; arenas are created lazily as needed.
|
|
*/
|
|
extern atomic_p_t arenas[];
|
|
|
|
void *a0malloc(size_t size);
|
|
void a0dalloc(void *ptr);
|
|
void *bootstrap_malloc(size_t size);
|
|
void *bootstrap_calloc(size_t num, size_t size);
|
|
void bootstrap_free(void *ptr);
|
|
void arena_set(unsigned ind, arena_t *arena);
|
|
unsigned narenas_total_get(void);
|
|
arena_t *arena_init(tsdn_t *tsdn, unsigned ind, extent_hooks_t *extent_hooks);
|
|
arena_t *arena_choose_hard(tsd_t *tsd, bool internal);
|
|
void arena_migrate(tsd_t *tsd, unsigned oldind, unsigned newind);
|
|
void iarena_cleanup(tsd_t *tsd);
|
|
void arena_cleanup(tsd_t *tsd);
|
|
size_t batch_alloc(void **ptrs, size_t num, size_t size, int flags);
|
|
void jemalloc_prefork(void);
|
|
void jemalloc_postfork_parent(void);
|
|
void jemalloc_postfork_child(void);
|
|
void je_sdallocx_noflags(void *ptr, size_t size);
|
|
void *malloc_default(size_t size);
|
|
|
|
#endif /* JEMALLOC_INTERNAL_EXTERNS_H */
|