vlib_node_main_t *nm = &vm->node_main;
vlib_node_t *n = vec_elt (nm->nodes, node_index);
ASSERT (n->type == VLIB_NODE_TYPE_INPUT);
+ clib_spinlock_lock_if_init (&nm->pending_interrupt_lock);
vec_add1 (nm->pending_interrupt_node_runtime_indices, n->runtime_index);
+ clib_spinlock_unlock_if_init (&nm->pending_interrupt_lock);
}
always_inline vlib_process_t *
vlib_get_frame_no_check (vlib_main_t * vm, uword frame_index)
{
vlib_frame_t *f;
- u32 cpu_index = frame_index & VLIB_CPU_MASK;
+ u32 thread_index = frame_index & VLIB_CPU_MASK;
u32 offset = frame_index & VLIB_OFFSET_MASK;
- vm = vlib_mains ? vlib_mains[cpu_index] : vm;
+ vm = vlib_mains[thread_index];
f = vm->heap_base + offset;
return f;
}
ASSERT (((uword) f & VLIB_CPU_MASK) == 0);
- vm = vlib_mains ? vlib_mains[f->cpu_index] : vm;
+ vm = vlib_mains[f->thread_index];
i = ((u8 *) f - (u8 *) vm->heap_base);
- return i | f->cpu_index;
+ return i | f->thread_index;
}
always_inline vlib_frame_t *
vlib_node_main_t *nm = &vm->node_main;
vlib_process_t *p;
vlib_process_event_type_t *et;
- uword t, l;
+ uword t;
void *event_data_vector;
p = vec_elt (nm->processes, nm->current_process_index);
p->non_empty_event_type_bitmap =
clib_bitmap_andnoti (p->non_empty_event_type_bitmap, t);
- l = _vec_len (p->pending_event_data_by_type_index[t]);
- ASSERT (l > 0);
+ ASSERT (_vec_len (p->pending_event_data_by_type_index[t]) > 0);
event_data_vector = p->pending_event_data_by_type_index[t];
p->pending_event_data_by_type_index[t] = 0;