api: Implement log_dump/log_details
[vpp.git] / src / vlib / node_funcs.h
index 3304d0f..c9ff93d 100644 (file)
@@ -135,7 +135,8 @@ vlib_node_set_runtime_data (vlib_main_t * vm, u32 node_index,
          STRUCT_OFFSET_OF (vlib_node_runtime_t, runtime_data));
 
   if (vec_len (n->runtime_data) > 0)
-    clib_memcpy (r->runtime_data, n->runtime_data, vec_len (n->runtime_data));
+    clib_memcpy_fast (r->runtime_data, n->runtime_data,
+                     vec_len (n->runtime_data));
 }
 
 /** \brief Set node dispatch state.
@@ -241,6 +242,12 @@ vlib_get_frame (vlib_main_t * vm, uword frame_index)
   return f;
 }
 
+always_inline void
+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)
 {
@@ -271,9 +278,6 @@ vlib_frame_vector_args (vlib_frame_t * f)
 
 /** \brief Get pointer to frame scalar data.
 
- @warning This is almost certainly not the function you wish to call.
- See @ref vlib_frame_vector_args instead.
-
  @param f vlib_frame_t pointer
 
  @return arbitrary node scalar data
@@ -281,7 +285,7 @@ vlib_frame_vector_args (vlib_frame_t * f)
  @sa vlib_frame_vector_args
 */
 always_inline void *
-vlib_frame_args (vlib_frame_t * f)
+vlib_frame_scalar_args (vlib_frame_t * f)
 {
   return vlib_frame_vector_args (f) - f->scalar_size;
 }
@@ -1182,6 +1186,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 */
 
 /*