1 /******************************************************************************/
2 #ifdef JEMALLOC_H_TYPES
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
;
10 #endif /* JEMALLOC_H_TYPES */
11 /******************************************************************************/
12 #ifdef JEMALLOC_H_STRUCTS
18 struct ctl_named_node_s
{
19 struct ctl_node_s node
;
21 /* If (nchildren == 0), this is a terminal node. */
23 const ctl_node_t
*children
;
24 int (*ctl
)(tsd_t
*, const size_t *, size_t, void *,
25 size_t *, void *, size_t);
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,
34 struct ctl_arena_stats_s
{
38 ssize_t lg_dirty_mult
;
43 /* The remainder are only populated if config_stats is true. */
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
;
53 malloc_bin_stats_t bstats
[NBINS
];
54 malloc_large_stats_t
*lstats
; /* nlclasses elements. */
55 malloc_huge_stats_t
*hstats
; /* nhclasses elements. */
66 ctl_arena_stats_t
*arenas
; /* (narenas + 1) elements. */
69 #endif /* JEMALLOC_H_STRUCTS */
70 /******************************************************************************/
71 #ifdef JEMALLOC_H_EXTERNS
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
,
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
);
81 void ctl_prefork(tsdn_t
*tsdn
);
82 void ctl_postfork_parent(tsdn_t
*tsdn
);
83 void ctl_postfork_child(tsdn_t
*tsdn
);
85 #define xmallctl(name, oldp, oldlenp, newp, newlen) do { \
86 if (je_mallctl(name, oldp, oldlenp, newp, newlen) \
89 "<jemalloc>: Failure in xmallctl(\"%s\", ...)\n", \
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); \
103 #define xmallctlbymib(mib, miblen, oldp, oldlenp, newp, newlen) do { \
104 if (je_mallctlbymib(mib, miblen, oldp, oldlenp, newp, \
107 "<jemalloc>: Failure in xmallctlbymib()\n"); \
112 #endif /* JEMALLOC_H_EXTERNS */
113 /******************************************************************************/
114 #ifdef JEMALLOC_H_INLINES
116 #endif /* JEMALLOC_H_INLINES */
117 /******************************************************************************/