From 4b20830b496ade3f1e77cd5fcbdf6d6c7bb5336d Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 30 Mar 2022 13:50:19 -0700 Subject: vlib: add support for workers sync Adds api that allows workers to synchronize through main thread. Type: improvement Signed-off-by: Florin Coras Change-Id: I1e75e2fb5144d397d19b13c4dfc7e937f11c044c --- src/vlib/threads.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'src/vlib/threads.h') diff --git a/src/vlib/threads.h b/src/vlib/threads.h index e406dde5b07..b25d4764168 100644 --- a/src/vlib/threads.h +++ b/src/vlib/threads.h @@ -101,6 +101,9 @@ typedef struct const char *barrier_caller; const char *barrier_context; volatile u32 *node_reforks_required; + volatile u32 wait_before_barrier; + volatile u32 workers_before_barrier; + volatile u32 done_work_before_barrier; long lwp; int cpu_id; @@ -484,6 +487,17 @@ void vlib_rpc_call_main_thread (void *function, u8 * args, u32 size); void vlib_get_thread_core_numa (vlib_worker_thread_t * w, unsigned cpu_id); vlib_thread_main_t *vlib_get_thread_main_not_inline (void); +/** + * Force workers sync from within worker + * + * Must be paired with @ref vlib_workers_continue + */ +void vlib_workers_sync (void); +/** + * Release barrier after workers sync + */ +void vlib_workers_continue (void); + #endif /* included_vlib_threads_h */ /* -- cgit 1.2.3-korg