vlib: introduce vlib_get_elog_main() 83/31783/4
authorDamjan Marion <damarion@cisco.com>
Fri, 26 Mar 2021 12:45:37 +0000 (13:45 +0100)
committerDamjan Marion <damarion@cisco.com>
Fri, 26 Mar 2021 15:33:42 +0000 (16:33 +0100)
Type: improvement
Change-Id: I73383eb15186021cd6527d112da8443a0082f129
Signed-off-by: Damjan Marion <damarion@cisco.com>
15 files changed:
src/plugins/avf/device.c
src/plugins/dpdk/device/init.c
src/plugins/unittest/util_test.c
src/vlib/cli.c
src/vlib/error_funcs.h
src/vlib/global_funcs.h
src/vlib/log.c
src/vlib/main.c
src/vlib/node.c
src/vlib/threads.c
src/vlib/threads.h
src/vlib/unix/main.c
src/vlibmemory/memory_api.h
src/vnet/ip6-nd/ip6_ra.c
src/vnet/session/session_cli.c

index def8a79..4418dfd 100644 (file)
@@ -183,7 +183,6 @@ retry:
 done:
   if (ad->flags & AVF_DEVICE_F_ELOG)
     {
-      /* *INDENT-OFF* */
       ELOG_TYPE_DECLARE (el) =
        {
          .format = "avf[%d] aq enq: s_flags 0x%x r_flags 0x%x opcode 0x%x "
@@ -199,14 +198,13 @@ done:
          u16 datalen;
          u16 retval;
        } *ed;
-      ed = ELOG_DATA (&vm->elog_main, el);
-      ed->dev_instance = ad->dev_instance;
-      ed->s_flags = dc.flags;
-      ed->r_flags = d->flags;
-      ed->opcode = dc.opcode;
-      ed->datalen = dc.datalen;
-      ed->retval = d->retval;
-      /* *INDENT-ON* */
+       ed = ELOG_DATA (&vlib_global_main.elog_main, el);
+       ed->dev_instance = ad->dev_instance;
+       ed->s_flags = dc.flags;
+       ed->r_flags = d->flags;
+       ed->opcode = dc.opcode;
+       ed->datalen = dc.datalen;
+       ed->retval = d->retval;
     }
 
   return err;
@@ -222,7 +220,6 @@ avf_cmd_rx_ctl_reg_write (vlib_main_t * vm, avf_device_t * ad, u32 reg,
 
   if (ad->flags & AVF_DEVICE_F_ELOG)
     {
-      /* *INDENT-OFF* */
       ELOG_TYPE_DECLARE (el) =
        {
          .format = "avf[%d] rx ctl reg write: reg 0x%x val 0x%x ",
@@ -234,11 +231,10 @@ avf_cmd_rx_ctl_reg_write (vlib_main_t * vm, avf_device_t * ad, u32 reg,
          u32 reg;
          u32 val;
        } *ed;
-      ed = ELOG_DATA (&vm->elog_main, el);
-      ed->dev_instance = ad->dev_instance;
-      ed->reg = reg;
-      ed->val = val;
-      /* *INDENT-ON* */
+       ed = ELOG_DATA (&vlib_global_main.elog_main, el);
+       ed->dev_instance = ad->dev_instance;
+       ed->reg = reg;
+       ed->val = val;
     }
   return err;
 }
@@ -500,7 +496,6 @@ done:
 
   if (ad->flags & AVF_DEVICE_F_ELOG)
     {
-      /* *INDENT-OFF* */
       ELOG_TYPE_DECLARE (el) =
        {
          .format = "avf[%d] send to pf: v_opcode %s (%d) v_retval 0x%x",
@@ -519,12 +514,11 @@ done:
          u32 v_opcode_val;
          u32 v_retval;
        } *ed;
-      ed = ELOG_DATA (&vm->elog_main, el);
-      ed->dev_instance = ad->dev_instance;
-      ed->v_opcode = op;
-      ed->v_opcode_val = op;
-      ed->v_retval = d->v_retval;
-      /* *INDENT-ON* */
+       ed = ELOG_DATA (&vlib_global_main.elog_main, el);
+       ed->dev_instance = ad->dev_instance;
+       ed->v_opcode = op;
+       ed->v_opcode_val = op;
+       ed->v_retval = d->v_retval;
     }
   return err;
 }
@@ -1138,10 +1132,10 @@ avf_process_one_device (vlib_main_t * vm, avf_device_t * ad, int is_irq)
                  u8 link_status;
                  u32 link_speed;
                } *ed;
-             ed = ELOG_DATA (&vm->elog_main, el);
-              ed->dev_instance = ad->dev_instance;
-             ed->link_status = link_up;
-             ed->link_speed = mbps;
+               ed = ELOG_DATA (&vlib_global_main.elog_main, el);
+               ed->dev_instance = ad->dev_instance;
+               ed->link_status = link_up;
+               ed->link_speed = mbps;
            }
        }
       else
@@ -1159,10 +1153,10 @@ avf_process_one_device (vlib_main_t * vm, avf_device_t * ad, int is_irq)
                  u32 event;
                  u32 severity;
                } *ed;
-             ed = ELOG_DATA (&vm->elog_main, el);
-              ed->dev_instance = ad->dev_instance;
-             ed->event = e->event;
-             ed->severity = e->severity;
+               ed = ELOG_DATA (&vlib_global_main.elog_main, el);
+               ed->dev_instance = ad->dev_instance;
+               ed->event = e->event;
+               ed->severity = e->severity;
            }
        }
     }
@@ -1374,7 +1368,7 @@ avf_irq_0_handler (vlib_main_t * vm, vlib_pci_dev_handle_t h, u16 line)
        u32 icr0;
       } *ed;
 
-      ed = ELOG_DATA (&vm->elog_main, el);
+      ed = ELOG_DATA (&vlib_global_main.elog_main, el);
       ed->dev_instance = ad->dev_instance;
       ed->icr0 = icr0;
     }
@@ -1410,7 +1404,7 @@ avf_irq_n_handler (vlib_main_t * vm, vlib_pci_dev_handle_t h, u16 line)
        u16 line;
       } *ed;
 
-      ed = ELOG_DATA (&vm->elog_main, el);
+      ed = ELOG_DATA (&vlib_global_main.elog_main, el);
       ed->dev_instance = ad->dev_instance;
       ed->line = line;
     }
index 2834a31..24f822e 100644 (file)
@@ -1730,7 +1730,6 @@ dpdk_update_link_state (dpdk_device_t * xd, f64 now)
 
   if (LINK_STATE_ELOGS)
     {
-      vlib_main_t *vm = vlib_get_main ();
       ELOG_TYPE_DECLARE (e) =
       {
       .format =
@@ -1744,7 +1743,7 @@ dpdk_update_link_state (dpdk_device_t * xd, f64 now)
        u8 old_link_state;
        u8 new_link_state;
       } *ed;
-      ed = ELOG_DATA (&vm->elog_main, e);
+      ed = ELOG_DATA (&vlib_global_main.elog_main, e);
       ed->sw_if_index = xd->sw_if_index;
       ed->admin_up = (xd->flags & DPDK_DEVICE_FLAG_ADMIN_UP) != 0;
       ed->old_link_state = (u8)
@@ -1783,8 +1782,6 @@ dpdk_update_link_state (dpdk_device_t * xd, f64 now)
     {
       if (LINK_STATE_ELOGS)
        {
-         vlib_main_t *vm = vlib_get_main ();
-
          ELOG_TYPE_DECLARE (e) =
          {
          .format =
@@ -1796,7 +1793,7 @@ dpdk_update_link_state (dpdk_device_t * xd, f64 now)
            u32 sw_if_index;
            u32 flags;
          } *ed;
-         ed = ELOG_DATA (&vm->elog_main, e);
+         ed = ELOG_DATA (&vlib_global_main.elog_main, e);
          ed->sw_if_index = xd->sw_if_index;
          ed->flags = hw_flags;
        }
index 67fe009..8dce270 100644 (file)
@@ -29,7 +29,7 @@ test_crash_command_fn (vlib_main_t * vm,
       .format_args = "i4",
     };
   /* *INDENT-ON* */
-  elog (&vm->elog_main, &e, 0xdefec8ed);
+  elog (&vlib_global_main.elog_main, &e, 0xdefec8ed);
 
   *p = 0xdeadbeef;
 
index 85ec6cb..3215a32 100644 (file)
@@ -575,8 +575,8 @@ vlib_cli_dispatch_sub_commands (vlib_main_t * vm,
                  {
                    u32 c;
                  } *ed;
-                 ed = ELOG_DATA (&vm->elog_main, e);
-                 ed->c = elog_string (&vm->elog_main, "%v", c->path);
+                 ed = ELOG_DATA (vlib_get_elog_main (), e);
+                 ed->c = elog_string (vlib_get_elog_main (), "%v", c->path);
                }
 
              if (!c->is_mp_safe)
@@ -607,17 +607,17 @@ vlib_cli_dispatch_sub_commands (vlib_main_t * vm,
                  {
                    u32 c, err;
                  } *ed;
-                 ed = ELOG_DATA (&vm->elog_main, e);
-                 ed->c = elog_string (&vm->elog_main, "%v", c->path);
+                 ed = ELOG_DATA (vlib_get_elog_main (), e);
+                 ed->c = elog_string (vlib_get_elog_main (), "%v", c->path);
                  if (c_error)
                    {
                      vec_add1 (c_error->what, 0);
-                     ed->err =
-                       elog_string (&vm->elog_main, (char *) c_error->what);
+                     ed->err = elog_string (vlib_get_elog_main (),
+                                            (char *) c_error->what);
                      _vec_len (c_error->what) -= 1;
                    }
                  else
-                   ed->err = elog_string (&vm->elog_main, "OK");
+                   ed->err = elog_string (vlib_get_elog_main (), "OK");
                }
 
              if (c_error)
@@ -1547,7 +1547,7 @@ event_logger_trace_command_fn (vlib_main_t * vm,
    */
   if (dispatch || circuit)
     {
-      elog_main_t *em = &vm->elog_main;
+      elog_main_t *em = &vlib_global_main.elog_main;
 
       em->n_total_events_disable_limit =
        em->n_total_events + vec_len (em->event_ring);
index ab281ba..4fea1ce 100644 (file)
@@ -47,7 +47,7 @@ vlib_error_elog_count (vlib_main_t * vm, uword counter, uword increment)
 {
   if (VLIB_ELOG_MAIN_LOOP > 0 && increment > 0)
     {
-      elog_main_t *em = &vm->elog_main;
+      elog_main_t *em = vlib_get_elog_main ();
       elog (em, vec_elt_at_index (vm->error_elog_event_types, counter),
            increment);
     }
index b1d636f..63f8115 100644 (file)
@@ -52,6 +52,13 @@ vlib_get_thread_main ()
   return &vlib_thread_main;
 }
 
+always_inline elog_main_t *
+vlib_get_elog_main ()
+{
+  vlib_main_t *vm = vlib_get_first_main ();
+  return &vm->elog_main;
+}
+
 #endif /* included_vlib_global_funcs_h_ */
 
 /*
index ed14d9e..fc67a1f 100644 (file)
@@ -249,9 +249,10 @@ vlib_log (vlib_log_level_t level, vlib_log_class_t class, char *fmt, ...)
             u32 string_index;
           } *ed;
           /* *INDENT-ON* */
-         ed = ELOG_DATA (&vm->elog_main, ee);
+         ed = ELOG_DATA (&vlib_global_main.elog_main, ee);
          ed->log_level = level;
-         ed->string_index = elog_string (&vm->elog_main, "%v", e->string);
+         ed->string_index =
+           elog_string (&vlib_global_main.elog_main, "%v", e->string);
        }
 
       lm->next = (lm->next + 1) % lm->size;
index fc6fadb..62da7b9 100644 (file)
@@ -694,7 +694,7 @@ static clib_error_t *
 vlib_cli_elog_clear (vlib_main_t * vm,
                     unformat_input_t * input, vlib_cli_command_t * cmd)
 {
-  elog_reset_buffer (&vm->elog_main);
+  elog_reset_buffer (&vlib_global_main.elog_main);
   return 0;
 }
 
@@ -711,7 +711,7 @@ static clib_error_t *
 elog_save_buffer (vlib_main_t * vm,
                  unformat_input_t * input, vlib_cli_command_t * cmd)
 {
-  elog_main_t *em = &vm->elog_main;
+  elog_main_t *em = &vlib_global_main.elog_main;
   char *file, *chroot_file;
   clib_error_t *error = 0;
 
@@ -765,7 +765,7 @@ static clib_error_t *
 elog_stop (vlib_main_t * vm,
           unformat_input_t * input, vlib_cli_command_t * cmd)
 {
-  elog_main_t *em = &vm->elog_main;
+  elog_main_t *em = &vlib_global_main.elog_main;
 
   em->n_total_events_disable_limit = em->n_total_events;
 
@@ -785,7 +785,7 @@ static clib_error_t *
 elog_restart (vlib_main_t * vm,
              unformat_input_t * input, vlib_cli_command_t * cmd)
 {
-  elog_main_t *em = &vm->elog_main;
+  elog_main_t *em = &vlib_global_main.elog_main;
 
   em->n_total_events_disable_limit = ~0;
 
@@ -805,11 +805,11 @@ static clib_error_t *
 elog_resize_command_fn (vlib_main_t * vm,
                        unformat_input_t * input, vlib_cli_command_t * cmd)
 {
-  elog_main_t *em = &vm->elog_main;
+  elog_main_t *em = &vlib_global_main.elog_main;
   u32 tmp;
 
   /* Stop the parade */
-  elog_reset_buffer (&vm->elog_main);
+  elog_reset_buffer (em);
 
   if (unformat (input, "%d", &tmp))
     {
@@ -836,7 +836,7 @@ VLIB_CLI_COMMAND (elog_resize_cli, static) = {
 static void
 elog_show_buffer_internal (vlib_main_t * vm, u32 n_events_to_show)
 {
-  elog_main_t *em = &vm->elog_main;
+  elog_main_t *em = &vlib_global_main.elog_main;
   elog_event_t *e, *es;
   f64 dt;
 
@@ -902,7 +902,7 @@ vlib_elog_main_loop_event (vlib_main_t * vm,
                           u64 time, u32 n_vectors, u32 is_return)
 {
   vlib_main_t *evm = &vlib_global_main;
-  elog_main_t *em = &evm->elog_main;
+  elog_main_t *em = vlib_get_elog_main ();
   int enabled = evm->elog_trace_graph_dispatch |
     evm->elog_trace_graph_circuit;
 
@@ -1819,8 +1819,7 @@ vlib_add_del_post_mortem_callback (void *cb, int is_add)
 static void
 elog_post_mortem_dump (void)
 {
-  vlib_main_t *vm = &vlib_global_main;
-  elog_main_t *em = &vm->elog_main;
+  elog_main_t *em = vlib_get_elog_main ();
 
   u8 *filename;
   clib_error_t *error;
@@ -1933,7 +1932,7 @@ vlib_main (vlib_main_t * volatile vm, unformat_input_t * input)
   if (vm->configured_elog_ring_size &&
       vm->configured_elog_ring_size != vm->elog_main.event_ring_size)
     elog_resize (&vm->elog_main, vm->configured_elog_ring_size);
-  vl_api_set_elog_main (&vm->elog_main);
+  vl_api_set_elog_main (vlib_get_elog_main ());
   (void) vl_api_set_elog_trace_api_messages (1);
 
   /* Default name. */
index 3c96d9d..9de4c69 100644 (file)
@@ -68,7 +68,8 @@ node_set_elog_name (vlib_main_t * vm, uword node_index)
   vec_free (t->format);
   t->format = (char *) format (0, "%v-return: %%d%c", n->name, 0);
 
-  n->name_elog_string = elog_string (&vm->elog_main, "%v%c", n->name, 0);
+  n->name_elog_string =
+    elog_string (&vlib_global_main.elog_main, "%v%c", n->name, 0);
 }
 
 void
index 939f910..cf82e18 100644 (file)
@@ -686,7 +686,7 @@ start_workers (vlib_main_t * vm)
   /* Set up the main thread */
   vec_add2_aligned (vlib_worker_threads, w, 1, CLIB_CACHE_LINE_BYTES);
   w->elog_track.name = "main thread";
-  elog_track_register (&vm->elog_main, &w->elog_track);
+  elog_track_register (vlib_get_elog_main (), &w->elog_track);
 
   if (vec_len (tm->thread_prefix))
     {
@@ -770,7 +770,7 @@ start_workers (vlib_main_t * vm)
              w->elog_track.name =
                (char *) format (0, "%s %d", tr->name, k + 1);
              vec_add1 (w->elog_track.name, 0);
-             elog_track_register (&vm->elog_main, &w->elog_track);
+             elog_track_register (vlib_get_elog_main (), &w->elog_track);
 
              if (tr->no_data_structure_clone)
                continue;
@@ -944,7 +944,7 @@ start_workers (vlib_main_t * vm)
                (char *) format (0, "%s %d", tr->name, j + 1);
              w->registration = tr;
              vec_add1 (w->elog_track.name, 0);
-             elog_track_register (&vm->elog_main, &w->elog_track);
+             elog_track_register (vlib_get_elog_main (), &w->elog_track);
            }
        }
     }
index eb31edc..b514ba4 100644 (file)
@@ -425,8 +425,7 @@ vlib_worker_thread_barrier_check (void)
            u32 thread_index;
          } __clib_packed *ed;
 
-         ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main, e,
-                               w->elog_track);
+         ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main, e, w->elog_track);
          ed->thread_index = thread_index;
        }
 
@@ -503,8 +502,7 @@ vlib_worker_thread_barrier_check (void)
            u32 duration;
          } __clib_packed *ed;
 
-         ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main, e,
-                               w->elog_track);
+         ed = ELOG_TRACK_DATA (&vlib_global_main.elog_main, e, w->elog_track);
          ed->thread_index = thread_index;
          ed->duration = (int) (1000000.0 * t);
        }
index f73f9ca..a0a13f3 100644 (file)
@@ -708,8 +708,8 @@ vlib_unix_main (int argc, char *argv[])
 
   /* Turn on the event logger at the first possible moment */
   vm->configured_elog_ring_size = 128 << 10;
-  elog_init (&vm->elog_main, vm->configured_elog_ring_size);
-  elog_enable_disable (&vm->elog_main, 1);
+  elog_init (vlib_get_elog_main (), vm->configured_elog_ring_size);
+  elog_enable_disable (vlib_get_elog_main (), 1);
 
   unformat_init_command_line (&input, (char **) vm->argv);
   if ((e = vlib_plugin_config (vm, &input)))
index f658006..843bf89 100644 (file)
@@ -67,17 +67,22 @@ vl_msg_api_handle_is_valid (u32 handle, u32 restarts)
   return ((restarts & VL_API_EPOCH_MASK) == epoch);
 }
 
-#define VL_MEM_API_LOG_Q_LEN(fmt,qlen)                 \
-if (TRACE_VLIB_MEMORY_QUEUE)                           \
-  do {                                                 \
-      ELOG_TYPE_DECLARE (e) = {                                \
-        .format = fmt,                                 \
-        .format_args = "i4",                           \
-      };                                                       \
-      struct { u32 len; } *ed;                         \
-      ed = ELOG_DATA (&vm->elog_main, e);              \
-      ed->len = qlen;                                  \
-  } while (0)
+#define VL_MEM_API_LOG_Q_LEN(fmt, qlen)                                       \
+  if (TRACE_VLIB_MEMORY_QUEUE)                                                \
+    do                                                                        \
+      {                                                                       \
+       ELOG_TYPE_DECLARE (e) = {                                             \
+         .format = fmt,                                                      \
+         .format_args = "i4",                                                \
+       };                                                                    \
+       struct                                                                \
+       {                                                                     \
+         u32 len;                                                            \
+       } * ed;                                                               \
+       ed = ELOG_DATA (&vlib_global_main.elog_main, e);                      \
+       ed->len = qlen;                                                       \
+      }                                                                       \
+  while (0)
 
 #endif /* SRC_VLIBMEMORY_MEMORY_API_H_ */
 
index a3d95ee..547ecf3 100644 (file)
@@ -252,9 +252,10 @@ ip6_neighbor_syslog (vlib_main_t * vm, int priority, char *fmt, ...)
       {
        u32 s[2];
       } *ed;
-      ed = ELOG_DATA (&vm->elog_main, e);
-      ed->s[0] = elog_string (&vm->elog_main, log_level_strings[priority]);
-      ed->s[1] = elog_string (&vm->elog_main, (char *) what);
+      ed = ELOG_DATA (vlib_get_elog_main (), e);
+      ed->s[0] =
+       elog_string (vlib_get_elog_main (), log_level_strings[priority]);
+      ed->s[1] = elog_string (vlib_get_elog_main (), (char *) what);
     }
   va_end (va);
   return;
index 0d54174..2ca9630 100644 (file)
@@ -598,7 +598,7 @@ show_session_command_fn (vlib_main_t * vm, unformat_input_t * input,
       u8 *str = format (0, "%U", format_session, s, 3);
       if (do_elog && s->session_state != SESSION_STATE_LISTENING)
        {
-         elog_main_t *em = &vm->elog_main;
+         elog_main_t *em = &vlib_global_main.elog_main;
          transport_connection_t *tc;
          f64 dt;