33 #define vl_print(handle, ...) vlib_cli_output (handle, __VA_ARGS__) 86 for (elix=0; elix<fqt->
nelts; elix++) {
125 while (n_left_to_node >= 4)
136 while (n_left_to_node > 0)
204 if (!have_io_threads)
210 VLIB_NODE_STATE_POLLING, 0,
262 if (tr && tr->
count > 0)
void dpdk_io_thread(vlib_worker_thread_t *w, u32 instances, u32 instance_id, char *worker_name, dpdk_io_thread_callback_t callback)
always_inline vlib_thread_main_t * vlib_get_thread_main()
sll srl srl sll sra u16x4 i
void(* dpdk_worker_thread_callback_t)(vlib_main_t *vm)
static void vlib_worker_thread_barrier_check(void)
VLIB_REGISTER_THREAD(worker_thread_reg, static)
vlib_node_registration_t ethernet_input_node
(constructor) VLIB_REGISTER_NODE (ethernet_input_node)
u32 buffer_index[VLIB_FRAME_SIZE]
always_inline vlib_main_t * vlib_get_main(void)
uword os_get_cpu_number(void)
#define static_always_inline
#define VLIB_INIT_FUNCTION(x)
u64 dispatch_pending_node(vlib_main_t *vm, vlib_pending_frame_t *p, u64 last_time_stamp)
void dpdk_io_thread_fn(void *arg)
vlib_frame_queue_elt_t * elts
vlib_node_runtime_t * nodes_by_type[VLIB_N_NODE_TYPE]
int dpdk_frame_queue_dequeue(vlib_main_t *vm)
always_inline void * vlib_frame_vector_args(vlib_frame_t *f)
void dpdk_worker_thread_fn(void *arg)
vlib_node_registration_t handoff_dispatch_node
(constructor) VLIB_REGISTER_NODE (handoff_dispatch_node)
always_inline void * clib_mem_set_heap(void *heap)
vlib_frame_queue_t ** vlib_frame_queues
void vlib_put_frame_to_node(vlib_main_t *vm, u32 to_node_index, vlib_frame_t *f)
frame_queue_nelt_counter_t * frame_queue_histogram
void clib_time_init(clib_time_t *c)
vlib_pending_frame_t * pending_frames
static_always_inline void dpdk_worker_thread_internal(vlib_main_t *vm, dpdk_worker_thread_callback_t callback, int have_io_threads)
uword * thread_registrations_by_name
void dpdk_worker_thread(vlib_worker_thread_t *w, char *io_name, dpdk_worker_thread_callback_t callback)
frame_queue_trace_t * frame_queue_traces
static clib_error_t * dpdk_thread_init(vlib_main_t *vm)
vlib_node_main_t node_main
always_inline void vlib_increment_main_loop_counter(vlib_main_t *vm)
static int vlib_frame_queue_dequeue_internal(vlib_main_t *vm)
#define hash_get_mem(h, key)
u64 dispatch_node(vlib_main_t *vm, vlib_node_runtime_t *node, vlib_node_type_t type, vlib_node_state_t dispatch_state, vlib_frame_t *frame, u64 last_time_stamp)
volatile u32 io_thread_release
#define vec_foreach(var, vec)
Vector iterator.
void vlib_worker_thread_init(vlib_worker_thread_t *w)
#define CLIB_MEMORY_BARRIER()
vlib_frame_t * vlib_get_frame_to_node(vlib_main_t *vm, u32 to_node_index)
always_inline u64 clib_cpu_time_now(void)
vlib_main_t ** vlib_mains
CLIB vectors are ubiquitous dynamically resized arrays with by user defined "headers".