chunk.h revision fb795867f0b3aa28bbdf177e1026f3e3408e0338
15f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/******************************************************************************/ 25f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifdef JEMALLOC_H_TYPES 35f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/* 55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) * Size and alignment of memory chunks that are allocated by the OS's virtual 65f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) * memory system. 703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles) */ 85f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define LG_CHUNK_DEFAULT 22 95f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 105f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/* Return the chunk address for allocation address a. */ 111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#define CHUNK_ADDR2BASE(a) \ 125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((void *)((uintptr_t)(a) & ~chunksize_mask)) 135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 145f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/* Return the chunk offset of address a. */ 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHUNK_ADDR2OFFSET(a) \ 165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ((size_t)((uintptr_t)(a) & chunksize_mask)) 175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/* Return the smallest chunk multiple that is >= s. */ 195f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#define CHUNK_CEILING(s) \ 205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (((s) + chunksize_mask) & ~chunksize_mask) 215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 225f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif /* JEMALLOC_H_TYPES */ 235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/******************************************************************************/ 245f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifdef JEMALLOC_H_STRUCTS 255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif /* JEMALLOC_H_STRUCTS */ 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/******************************************************************************/ 285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifdef JEMALLOC_H_EXTERNS 295f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 305f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)extern size_t opt_lg_chunk; 315f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)extern const char *opt_dss; 325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/* Protects stats_chunks; currently not used for any other purpose. */ 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)extern malloc_mutex_t chunks_mtx; 351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci/* Chunk statistics. */ 361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern chunk_stats_t stats_chunks; 371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern rtree_t *chunks_rtree; 391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern size_t chunksize; 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern size_t chunksize_mask; /* (chunksize - 1). */ 421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern size_t chunk_npages; 431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern size_t map_bias; /* Number of arena chunk header pages. */ 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern size_t arena_maxclass; /* Max size class for arenas. */ 451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid *chunk_alloc_base(size_t size); 471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid *chunk_alloc_arena(chunk_alloc_t *chunk_alloc, 481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chunk_dalloc_t *chunk_dalloc, unsigned arena_ind, size_t size, 491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci size_t alignment, bool *zero); 501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid *chunk_alloc_default(size_t size, size_t alignment, bool *zero, 511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci unsigned arena_ind); 521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid chunk_unmap(void *chunk, size_t size); 531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool chunk_dalloc_default(void *chunk, size_t size, unsigned arena_ind); 541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccibool chunk_boot(void); 551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccivoid chunk_prefork(void); 565f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void chunk_postfork_parent(void); 575f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void chunk_postfork_child(void); 585f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 595f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif /* JEMALLOC_H_EXTERNS */ 605f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/******************************************************************************/ 615f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#ifdef JEMALLOC_H_INLINES 625f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 635f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#endif /* JEMALLOC_H_INLINES */ 645f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)/******************************************************************************/ 655f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) 665f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "jemalloc/internal/chunk_dss.h" 675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "jemalloc/internal/chunk_mmap.h" 685f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)