if (PREDICT_FALSE (vm->check_frame_queues + frame_queue_check_counter))
{
u32 processed = 0;
+ vlib_frame_queue_dequeue_fn_t *fn =
+ vlib_buffer_func_main.frame_queue_dequeue_fn;
if (vm->check_frame_queues)
{
}
vec_foreach (fqm, tm->frame_queue_mains)
- processed += vlib_frame_queue_dequeue (vm, fqm);
+ processed += (fn) (vm, fqm);
/* No handoff queue work found? */
if (processed)
if (error)
clib_error_report (error);
- return 0;
+ return vm->main_loop_exit_status;
}
vlib_main_t *
return &vlib_global_main.elog_main;
}
+void
+vlib_exit_with_status (vlib_main_t *vm, int status)
+{
+ vm->main_loop_exit_status = status;
+ __atomic_store_n (&vm->main_loop_exit_now, 1, __ATOMIC_RELEASE);
+}
+
/*
* fd.io coding-style-patch-verification: ON
*