xref: /netbsd-src/external/bsd/jemalloc/dist/include/jemalloc/internal/inspect.h (revision 4439cfd0acf9c7dc90625e5cd83b2317a9ab8967)
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