X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvlib%2Fnode_funcs.h;h=d6d04fb16c2a5cb5c1168bc8c3d9c61f78ee1f08;hb=ae16a98199768f6dc6b19a3197df122418e458d2;hp=bf11a0eb6d43175cb528744a7c00d7df1186bab7;hpb=296988d358cd570247dd8b9b8bd5816a856c3d30;p=vpp.git diff --git a/src/vlib/node_funcs.h b/src/vlib/node_funcs.h index bf11a0eb6d4..d6d04fb16c2 100644 --- a/src/vlib/node_funcs.h +++ b/src/vlib/node_funcs.h @@ -212,32 +212,10 @@ vlib_get_process_from_node (vlib_main_t * vm, vlib_node_t * node) return vec_elt (nm->processes, node->runtime_index); } -/* Fetches frame with given handle. */ always_inline vlib_frame_t * -vlib_get_frame_no_check (vlib_main_t * vm, uword frame_index) +vlib_get_frame (vlib_main_t * vm, vlib_frame_t * f) { - vlib_frame_t *f; - f = vm->heap_aligned_base + (frame_index * VLIB_FRAME_ALIGN); - return f; -} - -always_inline u32 -vlib_frame_index_no_check (vlib_main_t * vm, vlib_frame_t * f) -{ - uword i; - - ASSERT (((uword) f & (VLIB_FRAME_ALIGN - 1)) == 0); - - i = ((u8 *) f - (u8 *) vm->heap_aligned_base); - ASSERT ((i / VLIB_FRAME_ALIGN) <= 0xFFFFFFFFULL); - - return i / VLIB_FRAME_ALIGN; -} - -always_inline vlib_frame_t * -vlib_get_frame (vlib_main_t * vm, uword frame_index) -{ - vlib_frame_t *f = vlib_get_frame_no_check (vm, frame_index); + ASSERT (f != NULL); ASSERT (f->frame_flags & VLIB_FRAME_IS_ALLOCATED); return f; } @@ -248,14 +226,6 @@ vlib_frame_no_append (vlib_frame_t * f) f->frame_flags |= VLIB_FRAME_NO_APPEND; } -always_inline u32 -vlib_frame_index (vlib_main_t * vm, vlib_frame_t * f) -{ - uword i = vlib_frame_index_no_check (vm, f); - ASSERT (vlib_get_frame (vm, i) == f); - return i; -} - /* Byte alignment for vector arguments. */ #define VLIB_FRAME_VECTOR_ALIGN (1 << 4) @@ -1186,6 +1156,16 @@ vlib_node_increment_counter (vlib_main_t * vm, u32 node_index, em->counters[node_counter_base_index + counter_index] += increment; } +/** @brief Create a vlib process + * @param vm &vlib_global_main + * @param f the process node function + * @param log2_n_stack_bytes size of the process stack, defaults to 16K + * @return newly-create node index + * @warning call only on the main thread. Barrier sync required + */ +u32 vlib_process_create (vlib_main_t * vm, char *name, + vlib_node_function_t * f, u32 log2_n_stack_bytes); + #endif /* included_vlib_node_funcs_h */ /*