]> git.proxmox.com Git - rustc.git/blob - src/jemalloc/include/jemalloc/internal/ctl.h
New upstream version 1.22.1+dfsg1
[rustc.git] / src / jemalloc / include / jemalloc / internal / ctl.h
1 /******************************************************************************/
2 #ifdef JEMALLOC_H_TYPES
3
4 typedef struct ctl_node_s ctl_node_t;
5 typedef struct ctl_named_node_s ctl_named_node_t;
6 typedef struct ctl_indexed_node_s ctl_indexed_node_t;
7 typedef struct ctl_arena_stats_s ctl_arena_stats_t;
8 typedef struct ctl_stats_s ctl_stats_t;
9
10 #endif /* JEMALLOC_H_TYPES */
11 /******************************************************************************/
12 #ifdef JEMALLOC_H_STRUCTS
13
14 struct ctl_node_s {
15 bool named;
16 };
17
18 struct ctl_named_node_s {
19 struct ctl_node_s node;
20 const char *name;
21 /* If (nchildren == 0), this is a terminal node. */
22 unsigned nchildren;
23 const ctl_node_t *children;
24 int (*ctl)(tsd_t *, const size_t *, size_t, void *,
25 size_t *, void *, size_t);
26 };
27
28 struct ctl_indexed_node_s {
29 struct ctl_node_s node;
30 const ctl_named_node_t *(*index)(tsdn_t *, const size_t *, size_t,
31 size_t);
32 };
33
34 struct ctl_arena_stats_s {
35 bool initialized;
36 unsigned nthreads;
37 const char *dss;
38 ssize_t lg_dirty_mult;
39 ssize_t decay_time;
40 size_t pactive;
41 size_t pdirty;
42
43 /* The remainder are only populated if config_stats is true. */
44
45 arena_stats_t astats;
46
47 /* Aggregate stats for small size classes, based on bin stats. */
48 size_t allocated_small;
49 uint64_t nmalloc_small;
50 uint64_t ndalloc_small;
51 uint64_t nrequests_small;
52
53 malloc_bin_stats_t bstats[NBINS];
54 malloc_large_stats_t *lstats; /* nlclasses elements. */
55 malloc_huge_stats_t *hstats; /* nhclasses elements. */
56 };
57
58 struct ctl_stats_s {
59 size_t allocated;
60 size_t active;
61 size_t metadata;
62 size_t resident;
63 size_t mapped;
64 size_t retained;
65 unsigned narenas;
66 ctl_arena_stats_t *arenas; /* (narenas + 1) elements. */
67 };
68
69 #endif /* JEMALLOC_H_STRUCTS */
70 /******************************************************************************/
71 #ifdef JEMALLOC_H_EXTERNS
72
73 int ctl_byname(tsd_t *tsd, const char *name, void *oldp, size_t *oldlenp,
74 void *newp, size_t newlen);
75 int ctl_nametomib(tsdn_t *tsdn, const char *name, size_t *mibp,
76 size_t *miblenp);
77
78 int ctl_bymib(tsd_t *tsd, const size_t *mib, size_t miblen, void *oldp,
79 size_t *oldlenp, void *newp, size_t newlen);
80 bool ctl_boot(void);
81 void ctl_prefork(tsdn_t *tsdn);
82 void ctl_postfork_parent(tsdn_t *tsdn);
83 void ctl_postfork_child(tsdn_t *tsdn);
84
85 #define xmallctl(name, oldp, oldlenp, newp, newlen) do { \
86 if (je_mallctl(name, oldp, oldlenp, newp, newlen) \
87 != 0) { \
88 malloc_printf( \
89 "<jemalloc>: Failure in xmallctl(\"%s\", ...)\n", \
90 name); \
91 abort(); \
92 } \
93 } while (0)
94
95 #define xmallctlnametomib(name, mibp, miblenp) do { \
96 if (je_mallctlnametomib(name, mibp, miblenp) != 0) { \
97 malloc_printf("<jemalloc>: Failure in " \
98 "xmallctlnametomib(\"%s\", ...)\n", name); \
99 abort(); \
100 } \
101 } while (0)
102
103 #define xmallctlbymib(mib, miblen, oldp, oldlenp, newp, newlen) do { \
104 if (je_mallctlbymib(mib, miblen, oldp, oldlenp, newp, \
105 newlen) != 0) { \
106 malloc_write( \
107 "<jemalloc>: Failure in xmallctlbymib()\n"); \
108 abort(); \
109 } \
110 } while (0)
111
112 #endif /* JEMALLOC_H_EXTERNS */
113 /******************************************************************************/
114 #ifdef JEMALLOC_H_INLINES
115
116 #endif /* JEMALLOC_H_INLINES */
117 /******************************************************************************/
118