xref: /freebsd/contrib/jemalloc/src/ecache.c (revision c43cad87172039ccf38172129c79755ea79e6102)
1*c43cad87SWarner Losh #include "jemalloc/internal/jemalloc_preamble.h"
2*c43cad87SWarner Losh #include "jemalloc/internal/jemalloc_internal_includes.h"
3*c43cad87SWarner Losh 
4*c43cad87SWarner Losh #include "jemalloc/internal/san.h"
5*c43cad87SWarner Losh 
6*c43cad87SWarner Losh bool
7*c43cad87SWarner Losh ecache_init(tsdn_t *tsdn, ecache_t *ecache, extent_state_t state, unsigned ind,
8*c43cad87SWarner Losh     bool delay_coalesce) {
9*c43cad87SWarner Losh 	if (malloc_mutex_init(&ecache->mtx, "extents", WITNESS_RANK_EXTENTS,
10*c43cad87SWarner Losh 	    malloc_mutex_rank_exclusive)) {
11*c43cad87SWarner Losh 		return true;
12*c43cad87SWarner Losh 	}
13*c43cad87SWarner Losh 	ecache->state = state;
14*c43cad87SWarner Losh 	ecache->ind = ind;
15*c43cad87SWarner Losh 	ecache->delay_coalesce = delay_coalesce;
16*c43cad87SWarner Losh 	eset_init(&ecache->eset, state);
17*c43cad87SWarner Losh 	eset_init(&ecache->guarded_eset, state);
18*c43cad87SWarner Losh 
19*c43cad87SWarner Losh 	return false;
20*c43cad87SWarner Losh }
21*c43cad87SWarner Losh 
22*c43cad87SWarner Losh void
23*c43cad87SWarner Losh ecache_prefork(tsdn_t *tsdn, ecache_t *ecache) {
24*c43cad87SWarner Losh 	malloc_mutex_prefork(tsdn, &ecache->mtx);
25*c43cad87SWarner Losh }
26*c43cad87SWarner Losh 
27*c43cad87SWarner Losh void
28*c43cad87SWarner Losh ecache_postfork_parent(tsdn_t *tsdn, ecache_t *ecache) {
29*c43cad87SWarner Losh 	malloc_mutex_postfork_parent(tsdn, &ecache->mtx);
30*c43cad87SWarner Losh }
31*c43cad87SWarner Losh 
32*c43cad87SWarner Losh void
33*c43cad87SWarner Losh ecache_postfork_child(tsdn_t *tsdn, ecache_t *ecache) {
34*c43cad87SWarner Losh 	malloc_mutex_postfork_child(tsdn, &ecache->mtx);
35*c43cad87SWarner Losh }
36