+ {
+ f64 deadman = vlib_time_now (vm) + 1.0;
+
+ for (i = 1; i < vec_len (vlib_mains); i++)
+ {
+ /* Has the worker actually stopped collecting data? */
+ while (clib_callback_is_set
+ (vlib_mains[i]->worker_thread_main_loop_callbacks,
+ vlib_mains[i]->worker_thread_main_loop_callback_lock,
+ read_current_perf_counters))
+ {
+ if (vlib_time_now (vm) > deadman)
+ {
+ clib_warning ("Thread %d deadman timeout!", i);
+ break;
+ }
+ vlib_process_suspend (pm->vlib_main, 1e-3);
+ }
+ }
+ }