aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session/segment_manager.c
diff options
context:
space:
mode:
authorSteven Luong <sluong@cisco.com>2024-12-05 13:16:04 -0800
committerFlorin Coras <florin.coras@gmail.com>2024-12-08 23:20:06 +0000
commitfd896fc9faeae2a97adf4b53ca15c7e36365021c (patch)
treec0594e2055cadd48e2d931c43bece5436c103c79 /src/vnet/session/segment_manager.c
parent3d0b4ab20c4d1c0dd376319fe533886f55558647 (diff)
session: enhance display for show app
Display segment manager information for show app <index> verbose Mark segment manager as listener if it is a listener segment. Type: improvement Change-Id: I8d91f4c2ed5b8f39620f2c8b06950c0e7ee2225e Signed-off-by: Steven Luong <sluong@cisco.com>
Diffstat (limited to 'src/vnet/session/segment_manager.c')
-rw-r--r--src/vnet/session/segment_manager.c50
1 files changed, 43 insertions, 7 deletions
diff --git a/src/vnet/session/segment_manager.c b/src/vnet/session/segment_manager.c
index 80bebdca9b5..2b44d92e0b5 100644
--- a/src/vnet/session/segment_manager.c
+++ b/src/vnet/session/segment_manager.c
@@ -1018,10 +1018,42 @@ segment_manager_main_init (void)
}
static u8 *
+format_segment_manager_flags (u8 *s, va_list *args)
+{
+ int flags = va_arg (*args, int);
+ typedef struct sm_flags_struct
+ {
+ u8 bit;
+ char *str;
+ } sm_flags_struct_t;
+ sm_flags_struct_t *entry;
+ static sm_flags_struct_t sm_flags_array[] = {
+#define _(b, v, s) \
+ { \
+ .bit = 1 << b, \
+ .str = #s, \
+ },
+ foreach_seg_manager_flag
+#undef _
+ { .str = NULL }
+ };
+
+ entry = sm_flags_array;
+ while (entry->str)
+ {
+ if (flags & entry->bit)
+ s = format (s, "%s ", entry->str, entry->bit);
+ entry++;
+ }
+ return s;
+}
+
+u8 *
format_segment_manager (u8 *s, va_list *args)
{
segment_manager_t *sm = va_arg (*args, segment_manager_t *);
int verbose = va_arg (*args, int);
+ int indent = format_get_indent (s);
app_worker_t *app_wrk;
uword max_fifo_size;
fifo_segment_t *seg;
@@ -1034,12 +1066,13 @@ format_segment_manager (u8 *s, va_list *args)
max_fifo_size = sm->max_fifo_size;
s = format (s,
- "[%u] %v app-wrk: %u segs: %u max-fifo-sz: %U "
- "wmarks: %u %u %s flags: 0x%x",
- segment_manager_index (sm), app ? app->name : 0,
- sm->app_wrk_index, pool_elts (sm->segments), format_memory_size,
- max_fifo_size, sm->high_watermark, sm->low_watermark,
- custom_logic ? "custom-tuning" : "no-tuning", sm->flags);
+ "%U[%u] %v app-wrk: %u segs: %u max-fifo-sz: %U "
+ "wmarks: %u %u %s flags: %U",
+ format_white_space, indent, segment_manager_index (sm),
+ app ? app->name : 0, sm->app_wrk_index, pool_elts (sm->segments),
+ format_memory_size, max_fifo_size, sm->high_watermark,
+ sm->low_watermark, custom_logic ? "custom-tuning" : "no-tuning",
+ format_segment_manager_flags, (int) sm->flags);
if (!verbose || !pool_elts (sm->segments))
return s;
@@ -1047,7 +1080,10 @@ format_segment_manager (u8 *s, va_list *args)
s = format (s, "\n\n");
segment_manager_foreach_segment_w_lock (
- seg, sm, ({ s = format (s, " *%U", format_fifo_segment, seg, verbose); }));
+ seg, sm, ({
+ s = format (s, "%U *%U", format_white_space, indent, format_fifo_segment,
+ seg, verbose);
+ }));
return s;
}