From 7d29e320fb2855a1ddb7a6af09078b8ed636de01 Mon Sep 17 00:00:00 2001 From: Ole Troan Date: Tue, 21 Jul 2020 08:46:08 +0200 Subject: stats: remove offsets on vpp side Represent pointers directly in shared memory and require clients to adjust for shared memory segment being mapped at different base address. Deprecated: stat_segment_pointer() / stat_segment_offset() Added: stat_segment_adjust() Bumped the stat segment version to 2. Type: refactor Signed-off-by: Ole Troan Change-Id: I33e756187b8903b45dcd353e6c1a101b7a4acb79 --- src/plugins/mactime/mactime_top.c | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'src/plugins/mactime') diff --git a/src/plugins/mactime/mactime_top.c b/src/plugins/mactime/mactime_top.c index ee60535e0c2..473cc5b5c0e 100644 --- a/src/plugins/mactime/mactime_top.c +++ b/src/plugins/mactime/mactime_top.c @@ -1,7 +1,6 @@ #include #include #include -#include #include #include #include @@ -11,9 +10,9 @@ #include #include -/* define message IDs */ -#include +#include #include +#include typedef struct { @@ -108,14 +107,18 @@ vl_api_mactime_details_t_handler (vl_api_mactime_details_t * mp) } #define vl_print(handle, ...) fformat(handle, __VA_ARGS__) +#define vl_endianfun /* define message structures */ +#include +#undef vl_endianfun -#define vl_endianfun +/* instantiate all the print functions we know about */ #define vl_printfun +#include +#undef vl_printfun + #define vl_api_version(n,v) static u32 api_version = v; #include #undef vl_api_version -#undef vl_printfun -#undef vl_endianfun static int connect_to_vpp (char *name) @@ -137,7 +140,7 @@ connect_to_vpp (char *name) vec_free (msg_base_lookup_name); - if (mm->msg_id_base == ~0) + if (mm->msg_id_base == (u16) ~ 0) return -1; #define _(N,n) \ @@ -183,7 +186,6 @@ scrape_stats_segment (mt_main_t * mm) { vlib_counter_t **counters_by_thread; vlib_counter_t *counters; - u64 *offset_vector; mactime_device_t *dev; stat_segment_access_t sa; stat_client_main_t *sm = mm->stat_client_main; @@ -217,8 +219,7 @@ again1: stat_segment_access_start (&sa, sm); ep = vec_elt_at_index (sm->directory_vector, mm->ls_result1[0]); - counters_by_thread = stat_segment_pointer (sm->shared_header, ep->offset); - offset_vector = stat_segment_pointer (sm->shared_header, ep->offset_vector); + counters_by_thread = stat_segment_adjust (sm, ep->data); for (i = 0; i < vec_len (pool_indices); i++) { @@ -230,8 +231,7 @@ again1: for (j = 0; j < vec_len (counters_by_thread); j++) { - counters = stat_segment_pointer (sm->shared_header, - offset_vector[j]); + counters = stat_segment_adjust (sm, counters_by_thread[j]); mm->allow_counters[index].packets += counters[index].packets; mm->allow_counters[index].bytes += counters[index].bytes; } @@ -252,8 +252,7 @@ again2: stat_segment_access_start (&sa, sm); ep = vec_elt_at_index (sm->directory_vector, mm->ls_result2[0]); - counters_by_thread = stat_segment_pointer (sm->shared_header, ep->offset); - offset_vector = stat_segment_pointer (sm->shared_header, ep->offset_vector); + counters_by_thread = stat_segment_adjust (sm, ep->data); for (i = 0; i < vec_len (pool_indices); i++) { @@ -265,8 +264,7 @@ again2: for (j = 0; j < vec_len (counters_by_thread); j++) { - counters = stat_segment_pointer (sm->shared_header, - offset_vector[j]); + counters = stat_segment_adjust (sm, counters_by_thread[j]); mm->drop_counters[index].packets += counters[index].packets; mm->drop_counters[index].bytes += counters[index].bytes; } -- cgit 1.2.3-korg