Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
dpdk: correct build to include rdma driver
[vpp.git]
/
src
/
vlib
/
threads.h
diff --git
a/src/vlib/threads.h
b/src/vlib/threads.h
index
91727ba
..
97df3d2
100644
(file)
--- a/
src/vlib/threads.h
+++ b/
src/vlib/threads.h
@@
-75,6
+75,7
@@
typedef struct
CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
u32 buffer_index[VLIB_FRAME_SIZE];
CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
u32 buffer_index[VLIB_FRAME_SIZE];
+ u32 aux_data[VLIB_FRAME_SIZE];
}
vlib_frame_queue_elt_t;
}
vlib_frame_queue_elt_t;
@@
-101,6
+102,9
@@
typedef struct
const char *barrier_caller;
const char *barrier_context;
volatile u32 *node_reforks_required;
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;
long lwp;
int cpu_id;
@@
-130,7
+134,10
@@
typedef struct
}
vlib_frame_queue_t;
}
vlib_frame_queue_t;
-typedef struct
+struct vlib_frame_queue_main_t_;
+typedef u32 (vlib_frame_queue_dequeue_fn_t) (
+ vlib_main_t *vm, struct vlib_frame_queue_main_t_ *fqm);
+typedef struct vlib_frame_queue_main_t_
{
u32 node_index;
u32 frame_queue_nelts;
{
u32 node_index;
u32 frame_queue_nelts;
@@
-140,6
+147,7
@@
typedef struct
/* for frame queue tracing */
frame_queue_trace_t *frame_queue_traces;
frame_queue_nelt_counter_t *frame_queue_histogram;
/* for frame queue tracing */
frame_queue_trace_t *frame_queue_traces;
frame_queue_nelt_counter_t *frame_queue_histogram;
+ vlib_frame_queue_dequeue_fn_t *frame_queue_dequeue_fn;
} vlib_frame_queue_main_t;
typedef struct
} vlib_frame_queue_main_t;
typedef struct
@@
-233,13
+241,6
@@
typedef enum
SCHED_POLICY_N,
} sched_policy_t;
SCHED_POLICY_N,
} sched_policy_t;
-typedef struct
-{
- clib_error_t *(*vlib_launch_thread_cb) (void *fp, vlib_worker_thread_t * w,
- unsigned cpu_id);
- clib_error_t *(*vlib_thread_set_lcore_cb) (u32 thread, u16 cpu);
-} vlib_thread_callbacks_t;
-
typedef struct
{
/* Link list of registrations, built by constructors */
typedef struct
{
/* Link list of registrations, built by constructors */
@@
-252,10
+253,6
@@
typedef struct
vlib_worker_thread_t *worker_threads;
vlib_worker_thread_t *worker_threads;
- /*
- * Launch all threads as pthreads,
- * not eal_rte_launch (strict affinity) threads
- */
int use_pthreads;
/* Number of vlib_main / vnet_main clones */
int use_pthreads;
/* Number of vlib_main / vnet_main clones */
@@
-297,10
+294,6
@@
typedef struct
/* scheduling policy priority */
u32 sched_priority;
/* scheduling policy priority */
u32 sched_priority;
- /* callbacks */
- vlib_thread_callbacks_t cb;
- int extern_thread_mgmt;
-
/* NUMA-bound heap size */
uword numa_heap_size;
/* NUMA-bound heap size */
uword numa_heap_size;
@@
-490,8
+483,6
@@
vlib_thread_is_main_w_barrier (void)
}
u8 *vlib_thread_stack_init (uword thread_index);
}
u8 *vlib_thread_stack_init (uword thread_index);
-int vlib_thread_cb_register (struct vlib_main_t *vm,
- vlib_thread_callbacks_t * cb);
extern void *rpc_call_main_thread_cb_fn;
void
extern void *rpc_call_main_thread_cb_fn;
void
@@
-501,6
+492,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);
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 */
/*
#endif /* included_vlib_threads_h */
/*