]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/jemalloc/include/jemalloc/internal/base_structs.h
Update jemalloc to version 5.1.0.
[FreeBSD/FreeBSD.git] / contrib / jemalloc / include / jemalloc / internal / base_structs.h
1 #ifndef JEMALLOC_INTERNAL_BASE_STRUCTS_H
2 #define JEMALLOC_INTERNAL_BASE_STRUCTS_H
3
4 #include "jemalloc/internal/jemalloc_internal_types.h"
5 #include "jemalloc/internal/mutex.h"
6 #include "jemalloc/internal/size_classes.h"
7
8 /* Embedded at the beginning of every block of base-managed virtual memory. */
9 struct base_block_s {
10         /* Total size of block's virtual memory mapping. */
11         size_t          size;
12
13         /* Next block in list of base's blocks. */
14         base_block_t    *next;
15
16         /* Tracks unused trailing space. */
17         extent_t        extent;
18 };
19
20 struct base_s {
21         /* Associated arena's index within the arenas array. */
22         unsigned        ind;
23
24         /*
25          * User-configurable extent hook functions.  Points to an
26          * extent_hooks_t.
27          */
28         atomic_p_t      extent_hooks;
29
30         /* Protects base_alloc() and base_stats_get() operations. */
31         malloc_mutex_t  mtx;
32
33         /* Using THP when true (metadata_thp auto mode). */
34         bool            auto_thp_switched;
35         /*
36          * Most recent size class in the series of increasingly large base
37          * extents.  Logarithmic spacing between subsequent allocations ensures
38          * that the total number of distinct mappings remains small.
39          */
40         pszind_t        pind_last;
41
42         /* Serial number generation state. */
43         size_t          extent_sn_next;
44
45         /* Chain of all blocks associated with base. */
46         base_block_t    *blocks;
47
48         /* Heap of extents that track unused trailing space within blocks. */
49         extent_heap_t   avail[NSIZES];
50
51         /* Stats, only maintained if config_stats. */
52         size_t          allocated;
53         size_t          resident;
54         size_t          mapped;
55         /* Number of THP regions touched. */
56         size_t          n_thp;
57 };
58
59 #endif /* JEMALLOC_INTERNAL_BASE_STRUCTS_H */