vlib: introduce vlib_get_main_by_index(), vlib_get_n_threads()
[vpp.git] / src / vpp / stats / stat_segment.c
index 43a4870..722edb0 100644 (file)
@@ -335,7 +335,10 @@ vlib_map_stat_segment_init (void)
                              format_clib_error, clib_mem_get_last_error ());
   /* Set size */
   if ((ftruncate (mfd, memory_size)) == -1)
-    return clib_error_return (0, "stat segment ftruncate failure");
+    {
+      close (mfd);
+      return clib_error_return (0, "stat segment ftruncate failure");
+    }
 
   memaddr = clib_mem_vm_map_shared (0, memory_size, mfd, 0, mem_name);
 
@@ -620,12 +623,12 @@ do_stat_segment_updates (stat_segment_main_t * sm)
    */
   vector_rate = 0.0;
 
-  for (i = 0; i < vec_len (vlib_mains); i++)
+  for (i = 0; i < vlib_get_n_threads (); i++)
     {
 
       f64 this_vector_rate;
 
-      this_vlib_main = vlib_mains[i];
+      this_vlib_main = vlib_get_main_by_index (i);
 
       this_vector_rate = vlib_internal_node_vector_rate (this_vlib_main);
       vlib_clear_internal_node_vector_rate (this_vlib_main);