X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlib%2Fthreads.h;h=c1188cea9338a67422c9a56d0b2c0f38338cc744;hb=a690fdbfe179e0ea65818c03b52535bf9210efd0;hp=95fcf3d83d7328128b36370749582c08c678a113;hpb=a4324a996f34902579338033110d27575a654c8e;p=vpp.git diff --git a/src/vlib/threads.h b/src/vlib/threads.h index 95fcf3d83d7..c1188cea933 100644 --- a/src/vlib/threads.h +++ b/src/vlib/threads.h @@ -110,7 +110,7 @@ typedef struct long lwp; int cpu_id; int core_id; - int socket_id; + int numa_id; pthread_t thread_id; } vlib_worker_thread_t; @@ -201,10 +201,12 @@ u32 vlib_frame_queue_main_init (u32 node_index, u32 frame_queue_nelts); #define BARRIER_SYNC_TIMEOUT (1.0) #endif -#define vlib_worker_thread_barrier_sync(X) {vlib_worker_threads[0].barrier_caller=__FUNCTION__;vlib_worker_thread_barrier_sync_int(X);} +#define vlib_worker_thread_barrier_sync(X) {vlib_worker_thread_barrier_sync_int(X, __FUNCTION__);} -void vlib_worker_thread_barrier_sync_int (vlib_main_t * vm); +void vlib_worker_thread_barrier_sync_int (vlib_main_t * vm, + const char *func_name); void vlib_worker_thread_barrier_release (vlib_main_t * vm); +void vlib_worker_thread_initial_barrier_sync_and_release (vlib_main_t * vm); void vlib_worker_thread_node_refork (void); static_always_inline uword @@ -336,6 +338,10 @@ typedef struct /* callbacks */ vlib_thread_callbacks_t cb; int extern_thread_mgmt; + + /* NUMA-bound heap size */ + uword numa_heap_size; + } vlib_thread_main_t; extern vlib_thread_main_t vlib_thread_main; @@ -414,12 +420,12 @@ vlib_worker_thread_barrier_check (void) ed->thread_index = thread_index; } - clib_atomic_fetch_add (vlib_worker_threads->workers_at_barrier, 1); if (CLIB_DEBUG > 0) { vm = vlib_get_main (); vm->parked_at_barrier = 1; } + clib_atomic_fetch_add (vlib_worker_threads->workers_at_barrier, 1); while (*vlib_worker_threads->wait_at_barrier) ; @@ -611,8 +617,9 @@ void vlib_process_signal_event_mt_helper (vlib_process_signal_event_mt_args_t * args); 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); + -u32 elog_global_id_for_msg_name (const char *msg_name); #endif /* included_vlib_threads_h */ /*