1#ifndef JEMALLOC_INTERNAL_INSPECT_H
2#define JEMALLOC_INTERNAL_INSPECT_H
3
4/*
5 * This module contains the heap introspection capabilities. For now they are
6 * exposed purely through mallctl APIs in the experimental namespace, but this
7 * may change over time.
8 */
9
10/*
11 * The following two structs are for experimental purposes. See
12 * experimental_utilization_query_ctl and
13 * experimental_utilization_batch_query_ctl in src/ctl.c.
14 */
15typedef struct inspect_extent_util_stats_s inspect_extent_util_stats_t;
16struct inspect_extent_util_stats_s {
17 size_t nfree;
18 size_t nregs;
19 size_t size;
20};
21
22typedef struct inspect_extent_util_stats_verbose_s
23 inspect_extent_util_stats_verbose_t;
24
25struct inspect_extent_util_stats_verbose_s {
26 void *slabcur_addr;
27 size_t nfree;
28 size_t nregs;
29 size_t size;
30 size_t bin_nfree;
31 size_t bin_nregs;
32};
33
34void inspect_extent_util_stats_get(tsdn_t *tsdn, const void *ptr,
35 size_t *nfree, size_t *nregs, size_t *size);
36void inspect_extent_util_stats_verbose_get(tsdn_t *tsdn, const void *ptr,
37 size_t *nfree, size_t *nregs, size_t *size,
38 size_t *bin_nfree, size_t *bin_nregs, void **slabcur_addr);
39
40#endif /* JEMALLOC_INTERNAL_INSPECT_H */
41