From 874c8518bb0fd91b99f5152a129c36009634e1a3 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Sat, 11 Oct 2025 00:13:55 +0200 Subject: [PATCH] vppinfra: forward declare clib_mem_heap_t Change-Id: Ie18a342722401d5b0f0c542110c3ff3d7b1a7e28 Type: improvement Signed-off-by: Damjan Marion --- src/vlib/stats/provider_mem.c | 12 ++++++++---- src/vppinfra/mem.h | 23 +++-------------------- src/vppinfra/mem_dlmalloc.c | 27 +++++++++++++++++++++++++++ 3 files changed, 38 insertions(+), 24 deletions(-) diff --git a/src/vlib/stats/provider_mem.c b/src/vlib/stats/provider_mem.c index f3a3f5d3ed4..e102ea408ad 100644 --- a/src/vlib/stats/provider_mem.c +++ b/src/vlib/stats/provider_mem.c @@ -54,13 +54,17 @@ vlib_stats_register_mem_heap (clib_mem_heap_t *heap) vec_add1 (memory_heaps_vec, heap); - r.entry_index = idx = vlib_stats_add_counter_vector ("/mem/%s", heap->name); + r.entry_index = idx = + vlib_stats_add_counter_vector ("/mem/%U", format_clib_mem_heap_name, heap); vlib_stats_validate (idx, 0, STAT_MEM_RELEASABLE); /* Create symlink */ - vlib_stats_add_symlink (idx, STAT_MEM_USED, "/mem/%s/used", heap->name); - vlib_stats_add_symlink (idx, STAT_MEM_TOTAL, "/mem/%s/total", heap->name); - vlib_stats_add_symlink (idx, STAT_MEM_FREE, "/mem/%s/free", heap->name); + vlib_stats_add_symlink (idx, STAT_MEM_USED, "/mem/%U/used", + format_clib_mem_heap_name, heap); + vlib_stats_add_symlink (idx, STAT_MEM_TOTAL, "/mem/%U/total", + format_clib_mem_heap_name, heap); + vlib_stats_add_symlink (idx, STAT_MEM_FREE, "/mem/%U/free", + format_clib_mem_heap_name, heap); r.private_data = vec_len (memory_heaps_vec) - 1; r.collect_fn = stat_provider_mem_usage_update_fn; diff --git a/src/vppinfra/mem.h b/src/vppinfra/mem.h index 893978081d0..5ce7dae692c 100644 --- a/src/vppinfra/mem.h +++ b/src/vppinfra/mem.h @@ -109,26 +109,8 @@ typedef enum #undef _ } clib_mem_heap_flag_t; -typedef struct -{ - /* base address */ - void *base; - - /* dlmalloc mspace */ - void *mspace; - - /* heap size */ - uword size; - - /* page size (log2) */ - clib_mem_page_sz_t log2_page_sz:8; - - /* flags */ - clib_mem_heap_flag_t flags:8; - - /* name - _MUST_ be last */ - char name[0]; -} clib_mem_heap_t; +struct clib_mem_heap_t; +typedef struct clib_mem_heap_t clib_mem_heap_t; typedef struct { @@ -354,6 +336,7 @@ uword clib_mem_get_heap_free_space (clib_mem_heap_t * heap); u8 *format_clib_mem_usage (u8 * s, va_list * args); u8 *format_clib_mem_heap (u8 * s, va_list * va); +u8 *format_clib_mem_heap_name (u8 *s, va_list *va); u8 *format_clib_mem_page_stats (u8 * s, va_list * va); /* Allocate virtual address space. */ diff --git a/src/vppinfra/mem_dlmalloc.c b/src/vppinfra/mem_dlmalloc.c index 7944240390b..68413d5cc4d 100644 --- a/src/vppinfra/mem_dlmalloc.c +++ b/src/vppinfra/mem_dlmalloc.c @@ -21,6 +21,27 @@ #include #include +struct clib_mem_heap_t +{ + /* base address */ + void *base; + + /* dlmalloc mspace */ + void *mspace; + + /* heap size */ + uword size; + + /* page size (log2) */ + clib_mem_page_sz_t log2_page_sz : 8; + + /* flags */ + clib_mem_heap_flag_t flags : 8; + + /* name - _MUST_ be last */ + char name[0]; +}; + typedef struct { clib_spinlock_t lock; @@ -823,3 +844,9 @@ clib_mem_free_s (void *p) memset_s_inline (p, size, 0, size); clib_mem_free (p); } +__clib_export u8 * +format_clib_mem_heap_name (u8 *s, va_list *va) +{ + clib_mem_heap_t *h = va_arg (*va, clib_mem_heap_t *); + return format (s, "%s", h->name); +} -- 2.16.6