xref: /freebsd/contrib/jemalloc/include/jemalloc/internal/tcache_types.h (revision c43cad87172039ccf38172129c79755ea79e6102)
1 #ifndef JEMALLOC_INTERNAL_TCACHE_TYPES_H
2 #define JEMALLOC_INTERNAL_TCACHE_TYPES_H
3 
4 #include "jemalloc/internal/sc.h"
5 
6 typedef struct tcache_slow_s tcache_slow_t;
7 typedef struct tcache_s tcache_t;
8 typedef struct tcaches_s tcaches_t;
9 
10 /*
11  * tcache pointers close to NULL are used to encode state information that is
12  * used for two purposes: preventing thread caching on a per thread basis and
13  * cleaning up during thread shutdown.
14  */
15 #define TCACHE_STATE_DISABLED		((tcache_t *)(uintptr_t)1)
16 #define TCACHE_STATE_REINCARNATED	((tcache_t *)(uintptr_t)2)
17 #define TCACHE_STATE_PURGATORY		((tcache_t *)(uintptr_t)3)
18 #define TCACHE_STATE_MAX		TCACHE_STATE_PURGATORY
19 
20 /* Used in TSD static initializer only. Real init in tsd_tcache_data_init(). */
21 #define TCACHE_ZERO_INITIALIZER {0}
22 #define TCACHE_SLOW_ZERO_INITIALIZER {0}
23 
24 /* Used in TSD static initializer only. Will be initialized to opt_tcache. */
25 #define TCACHE_ENABLED_ZERO_INITIALIZER false
26 
27 /* Used for explicit tcache only. Means flushed but not destroyed. */
28 #define TCACHES_ELM_NEED_REINIT ((tcache_t *)(uintptr_t)1)
29 
30 #define TCACHE_LG_MAXCLASS_LIMIT 23 /* tcache_maxclass = 8M */
31 #define TCACHE_MAXCLASS_LIMIT ((size_t)1 << TCACHE_LG_MAXCLASS_LIMIT)
32 #define TCACHE_NBINS_MAX (SC_NBINS + SC_NGROUP *			\
33     (TCACHE_LG_MAXCLASS_LIMIT - SC_LG_LARGE_MINCLASS) + 1)
34 
35 #endif /* JEMALLOC_INTERNAL_TCACHE_TYPES_H */
36