From 849cbe225ea9c0358e3f2789c89d4b84d0f7b367 Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Tue, 26 Feb 2019 13:10:56 +0100 Subject: stats: buffer gauge callbacks use index instead of name. Change-Id: I500b8e72d7e021b9564dad0ffc087cb0e1ceb96f Signed-off-by: Ole Troan --- src/vlib/buffer.c | 46 ++++++++++++++++++++-------------------------- 1 file changed, 20 insertions(+), 26 deletions(-) (limited to 'src/vlib') diff --git a/src/vlib/buffer.c b/src/vlib/buffer.c index 091799b3f12..7581d9cdd48 100644 --- a/src/vlib/buffer.c +++ b/src/vlib/buffer.c @@ -725,26 +725,22 @@ buffer_get_cached (vlib_buffer_pool_t * bp) } static vlib_buffer_pool_t * -buffer_get_by_name (vlib_buffer_main_t * bm, char *name) +buffer_get_by_index (vlib_buffer_main_t * bm, u32 index) { vlib_buffer_pool_t *bp; - vec_foreach (bp, bm->buffer_pools) - { - if (!strcmp ((char *) bp->name, name)) - return bp; - } - - return 0; + if (!bm->buffer_pools || vec_len (bm->buffer_pools) < index) + return 0; + bp = vec_elt_at_index (bm->buffer_pools, index); + if (!bp) + return 0; + return bp; } static void -buffer_gauges_update_used_fn (stat_segment_directory_entry_t * e) +buffer_gauges_update_used_fn (stat_segment_directory_entry_t * e, u32 index) { vlib_main_t *vm = vlib_get_main (); - vlib_buffer_pool_t *bp; - - bp = buffer_get_by_name (vm->buffer_main, - &e->name[sizeof ("/buffer/used/") - 1]); + vlib_buffer_pool_t *bp = buffer_get_by_index (vm->buffer_main, index); if (!bp) return; @@ -752,13 +748,11 @@ buffer_gauges_update_used_fn (stat_segment_directory_entry_t * e) } static void -buffer_gauges_update_available_fn (stat_segment_directory_entry_t * e) +buffer_gauges_update_available_fn (stat_segment_directory_entry_t * e, + u32 index) { vlib_main_t *vm = vlib_get_main (); - vlib_buffer_pool_t *bp; - - bp = buffer_get_by_name (vm->buffer_main, - &e->name[sizeof ("/buffer/available/") - 1]); + vlib_buffer_pool_t *bp = buffer_get_by_index (vm->buffer_main, index); if (!bp) return; @@ -766,13 +760,10 @@ buffer_gauges_update_available_fn (stat_segment_directory_entry_t * e) } static void -buffer_gauges_update_cached_fn (stat_segment_directory_entry_t * e) +buffer_gauges_update_cached_fn (stat_segment_directory_entry_t * e, u32 index) { vlib_main_t *vm = vlib_get_main (); - vlib_buffer_pool_t *bp; - - bp = buffer_get_by_name (vm->buffer_main, - &e->name[sizeof ("/buffer/cached/") - 1]); + vlib_buffer_pool_t *bp = buffer_get_by_index (vm->buffer_main, index); if (!bp) return; @@ -818,13 +809,16 @@ vlib_buffer_main_init (struct vlib_main_t * vm) vec_foreach (bp, bm->buffer_pools) { name = format (0, "/buffer/cached/%s%c", bp->name, 0); - stat_segment_register_gauge (name, buffer_gauges_update_cached_fn); + stat_segment_register_gauge (name, buffer_gauges_update_cached_fn, + bp - bm->buffer_pools); vec_free (name); name = format (0, "/buffer/used/%s%c", bp->name, 0); - stat_segment_register_gauge (name, buffer_gauges_update_used_fn); + stat_segment_register_gauge (name, buffer_gauges_update_used_fn, + bp - bm->buffer_pools); vec_free (name); name = format (0, "/buffer/available/%s%c", bp->name, 0); - stat_segment_register_gauge (name, buffer_gauges_update_available_fn); + stat_segment_register_gauge (name, buffer_gauges_update_available_fn, + bp - bm->buffer_pools); vec_free (name); } -- cgit 1.2.3-korg