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