vlib: introduce vlib_get_main_by_index(), vlib_get_n_threads()
[vpp.git] / src / vlib / global_funcs.h
index f51ec38..b1d636f 100644 (file)
 #ifndef included_vlib_global_funcs_h_
 #define included_vlib_global_funcs_h_
 
+always_inline u32
+vlib_get_n_threads ()
+{
+  return vec_len (vlib_mains);
+}
+
 always_inline vlib_main_t *
-vlib_get_main (void)
+vlib_get_main_by_index (u32 thread_index)
 {
   vlib_main_t *vm;
-  vm = vlib_mains[os_get_cpu_number ()];
+  vm = vlib_mains[thread_index];
   ASSERT (vm);
   return vm;
 }
 
+always_inline vlib_main_t *
+vlib_get_main (void)
+{
+  return vlib_get_main_by_index (vlib_get_thread_index ());
+}
+
+always_inline vlib_main_t *
+vlib_get_first_main (void)
+{
+  return vlib_get_main_by_index (0);
+}
+
 always_inline vlib_thread_main_t *
 vlib_get_thread_main ()
 {