chunk.h revision 609ae595f0358157b19311b0f9f9591db7cee705
1/******************************************************************************/ 2#ifdef JEMALLOC_H_TYPES 3 4/* 5 * Size and alignment of memory chunks that are allocated by the OS's virtual 6 * memory system. 7 */ 8#define LG_CHUNK_DEFAULT 22 9 10/* Return the chunk address for allocation address a. */ 11#define CHUNK_ADDR2BASE(a) \ 12 ((void *)((uintptr_t)(a) & ~chunksize_mask)) 13 14/* Return the chunk offset of address a. */ 15#define CHUNK_ADDR2OFFSET(a) \ 16 ((size_t)((uintptr_t)(a) & chunksize_mask)) 17 18/* Return the smallest chunk multiple that is >= s. */ 19#define CHUNK_CEILING(s) \ 20 (((s) + chunksize_mask) & ~chunksize_mask) 21 22#endif /* JEMALLOC_H_TYPES */ 23/******************************************************************************/ 24#ifdef JEMALLOC_H_STRUCTS 25 26#endif /* JEMALLOC_H_STRUCTS */ 27/******************************************************************************/ 28#ifdef JEMALLOC_H_EXTERNS 29 30extern size_t opt_lg_chunk; 31extern const char *opt_dss; 32 33/* Protects stats_chunks; currently not used for any other purpose. */ 34extern malloc_mutex_t chunks_mtx; 35/* Chunk statistics. */ 36extern chunk_stats_t stats_chunks; 37 38extern rtree_t *chunks_rtree; 39 40extern size_t chunksize; 41extern size_t chunksize_mask; /* (chunksize - 1). */ 42extern size_t chunk_npages; 43extern size_t map_bias; /* Number of arena chunk header pages. */ 44extern size_t arena_maxclass; /* Max size class for arenas. */ 45 46void *chunk_alloc(size_t size, size_t alignment, bool base, bool *zero, 47 dss_prec_t dss_prec); 48void chunk_unmap(void *chunk, size_t size); 49void chunk_dealloc(void *chunk, size_t size, bool unmap); 50bool chunk_boot(void); 51void chunk_prefork(void); 52void chunk_postfork_parent(void); 53void chunk_postfork_child(void); 54 55#endif /* JEMALLOC_H_EXTERNS */ 56/******************************************************************************/ 57#ifdef JEMALLOC_H_INLINES 58 59#endif /* JEMALLOC_H_INLINES */ 60/******************************************************************************/ 61 62#include "jemalloc/internal/chunk_dss.h" 63#include "jemalloc/internal/chunk_mmap.h" 64