mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-07-23 21:23:06 +00:00
Extent refactor: Introduce ecache module.
This will eventually completely wrap the eset, and handle concurrency, allocation, and deallocation. For now, we only pull out the mutex from the eset.
This commit is contained in:
committed by
David Goldblatt
parent
0704516245
commit
bb70df8e5b
54
src/ecache.c
Normal file
54
src/ecache.c
Normal file
@@ -0,0 +1,54 @@
|
||||
#include "jemalloc/internal/jemalloc_preamble.h"
|
||||
#include "jemalloc/internal/jemalloc_internal_includes.h"
|
||||
|
||||
bool
|
||||
ecache_init(tsdn_t *tsdn, ecache_t *ecache, extent_state_t state,
|
||||
bool delay_coalesce) {
|
||||
if (malloc_mutex_init(&ecache->mtx, "extents", WITNESS_RANK_EXTENTS,
|
||||
malloc_mutex_rank_exclusive)) {
|
||||
return true;
|
||||
}
|
||||
eset_init(&ecache->eset, state, delay_coalesce);
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
ecache_prefork(tsdn_t *tsdn, ecache_t *ecache) {
|
||||
malloc_mutex_prefork(tsdn, &ecache->mtx);
|
||||
}
|
||||
|
||||
void
|
||||
ecache_postfork_parent(tsdn_t *tsdn, ecache_t *ecache) {
|
||||
malloc_mutex_postfork_parent(tsdn, &ecache->mtx);
|
||||
}
|
||||
|
||||
void
|
||||
ecache_postfork_child(tsdn_t *tsdn, ecache_t *ecache) {
|
||||
malloc_mutex_postfork_child(tsdn, &ecache->mtx);
|
||||
}
|
||||
|
||||
bool
|
||||
ecache_grow_init(tsdn_t *tsdn, ecache_grow_t *ecache_grow) {
|
||||
ecache_grow->next = sz_psz2ind(HUGEPAGE);
|
||||
ecache_grow->limit = sz_psz2ind(SC_LARGE_MAXCLASS);
|
||||
if (malloc_mutex_init(&ecache_grow->mtx, "extent_grow",
|
||||
WITNESS_RANK_EXTENT_GROW, malloc_mutex_rank_exclusive)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void
|
||||
ecache_grow_prefork(tsdn_t *tsdn, ecache_grow_t *ecache_grow) {
|
||||
malloc_mutex_prefork(tsdn, &ecache_grow->mtx);
|
||||
}
|
||||
|
||||
void
|
||||
ecache_grow_postfork_parent(tsdn_t *tsdn, ecache_grow_t *ecache_grow) {
|
||||
malloc_mutex_postfork_parent(tsdn, &ecache_grow->mtx);
|
||||
}
|
||||
|
||||
void
|
||||
ecache_grow_postfork_child(tsdn_t *tsdn, ecache_grow_t *ecache_grow) {
|
||||
malloc_mutex_postfork_child(tsdn, &ecache_grow->mtx);
|
||||
}
|
||||
Reference in New Issue
Block a user