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 | */ |
15 | typedef struct inspect_extent_util_stats_s inspect_extent_util_stats_t; |
16 | struct inspect_extent_util_stats_s { |
17 | size_t nfree; |
18 | size_t nregs; |
19 | size_t size; |
20 | }; |
21 | |
22 | typedef struct inspect_extent_util_stats_verbose_s |
23 | inspect_extent_util_stats_verbose_t; |
24 | |
25 | struct 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 | |
34 | void inspect_extent_util_stats_get(tsdn_t *tsdn, const void *ptr, |
35 | size_t *nfree, size_t *nregs, size_t *size); |
36 | void 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 | |