aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session/segment_manager.c
diff options
context:
space:
mode:
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;
}