mirror of
https://github.com/jemalloc/jemalloc.git
synced 2026-08-25 00:23:33 +03: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:
parent
0704516245
commit
bb70df8e5b
15 changed files with 354 additions and 295 deletions
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);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue