1 | #include "jemalloc/internal/jemalloc_preamble.h" |
---|---|
2 | #include "jemalloc/internal/jemalloc_internal_includes.h" |
3 | |
4 | #include "jemalloc/internal/assert.h" |
5 | #include "jemalloc/internal/ctl.h" |
6 | #include "jemalloc/internal/extent_dss.h" |
7 | #include "jemalloc/internal/extent_mmap.h" |
8 | #include "jemalloc/internal/inspect.h" |
9 | #include "jemalloc/internal/mutex.h" |
10 | #include "jemalloc/internal/nstime.h" |
11 | #include "jemalloc/internal/peak_event.h" |
12 | #include "jemalloc/internal/prof_data.h" |
13 | #include "jemalloc/internal/prof_log.h" |
14 | #include "jemalloc/internal/prof_recent.h" |
15 | #include "jemalloc/internal/prof_stats.h" |
16 | #include "jemalloc/internal/prof_sys.h" |
17 | #include "jemalloc/internal/safety_check.h" |
18 | #include "jemalloc/internal/sc.h" |
19 | #include "jemalloc/internal/util.h" |
20 | |
21 | /******************************************************************************/ |
22 | /* Data. */ |
23 | |
24 | /* |
25 | * ctl_mtx protects the following: |
26 | * - ctl_stats->* |
27 | */ |
28 | static malloc_mutex_t ctl_mtx; |
29 | static bool ctl_initialized; |
30 | static ctl_stats_t *ctl_stats; |
31 | static ctl_arenas_t *ctl_arenas; |
32 | |
33 | /******************************************************************************/ |
34 | /* Helpers for named and indexed nodes. */ |
35 | |
36 | static const ctl_named_node_t * |
37 | ctl_named_node(const ctl_node_t *node) { |
38 | return ((node->named) ? (const ctl_named_node_t *)node : NULL); |
39 | } |
40 | |
41 | static const ctl_named_node_t * |
42 | ctl_named_children(const ctl_named_node_t *node, size_t index) { |
43 | const ctl_named_node_t *children = ctl_named_node(node->children); |
44 | |
45 | return (children ? &children[index] : NULL); |
46 | } |
47 | |
48 | static const ctl_indexed_node_t * |
49 | ctl_indexed_node(const ctl_node_t *node) { |
50 | return (!node->named ? (const ctl_indexed_node_t *)node : NULL); |
51 | } |
52 | |
53 | /******************************************************************************/ |
54 | /* Function prototypes for non-inline static functions. */ |
55 | |
56 | #define CTL_PROTO(n) \ |
57 | static int n##_ctl(tsd_t * |