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 | |