FD.io VPP  v17.04.2-2-ga8f93f8
Vector Packet Processing
node_funcs.h File Reference

vlib node functions More...

+ Include dependency graph for node_funcs.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define VLIB_FRAME_VECTOR_ALIGN   (1 << 4)
 
#define vlib_get_next_frame_macro(vm, node, next_index, vectors, n_vectors_left, alloc_new_frame)
 
#define vlib_get_next_frame(vm, node, next_index, vectors, n_vectors_left)
 Get pointer to next frame vector data by (vlib_node_runtime_t, next_index). More...
 
#define vlib_get_new_next_frame(vm, node, next_index, vectors, n_vectors_left)
 
#define vlib_set_next_frame(vm, node, next_index, v)
 

Functions

static vlib_node_tvlib_get_node (vlib_main_t *vm, u32 i)
 Get vlib node by index. More...
 
static vlib_node_tvlib_get_next_node (vlib_main_t *vm, u32 node_index, u32 next_index)
 Get vlib node by graph arc (next) index. More...
 
static vlib_node_runtime_tvlib_node_get_runtime (vlib_main_t *vm, u32 node_index)
 Get node runtime by node index. More...
 
static void * vlib_node_get_runtime_data (vlib_main_t *vm, u32 node_index)
 Get node runtime private data by node index. More...
 
static void vlib_node_set_runtime_data (vlib_main_t *vm, u32 node_index, void *runtime_data, u32 n_runtime_data_bytes)
 Set node runtime private data. More...
 
static void vlib_node_set_state (vlib_main_t *vm, u32 node_index, vlib_node_state_t new_state)
 Set node dispatch state. More...
 
static void vlib_node_set_interrupt_pending (vlib_main_t *vm, u32 node_index)
 
static vlib_process_tvlib_get_process_from_node (vlib_main_t *vm, vlib_node_t *node)
 
static vlib_frame_tvlib_get_frame_no_check (vlib_main_t *vm, uword frame_index)
 
static u32 vlib_frame_index_no_check (vlib_main_t *vm, vlib_frame_t *f)
 
static vlib_frame_tvlib_get_frame (vlib_main_t *vm, uword frame_index)
 
static u32 vlib_frame_index (vlib_main_t *vm, vlib_frame_t *f)
 
static u32 vlib_frame_vector_byte_offset (u32 scalar_size)
 
static void * vlib_frame_vector_args (vlib_frame_t *f)
 Get pointer to frame vector data. More...
 
static void * vlib_frame_args (vlib_frame_t *f)
 Get pointer to frame scalar data. More...
 
static vlib_next_frame_tvlib_node_runtime_get_next_frame (vlib_main_t *vm, vlib_node_runtime_t *n, u32 next_index)
 
static vlib_next_frame_tvlib_node_get_next_frame (vlib_main_t *vm, u32 node_index, u32 next_index)
 Get pointer to frame by (node_index, next_index). More...
 
vlib_frame_tvlib_get_next_frame_internal (vlib_main_t *vm, vlib_node_runtime_t *node, u32 next_index, u32 alloc_new_frame)
 
void vlib_put_next_frame (vlib_main_t *vm, vlib_node_runtime_t *r, u32 next_index, u32 n_packets_left)
 Release pointer to next frame vector data. More...
 
static void vlib_set_next_frame_buffer (vlib_main_t *vm, vlib_node_runtime_t *node, u32 next_index, u32 buffer_index)
 
vlib_frame_tvlib_get_frame_to_node (vlib_main_t *vm, u32 to_node_index)
 
void vlib_put_frame_to_node (vlib_main_t *vm, u32 to_node_index, vlib_frame_t *f)
 
static vlib_process_tvlib_get_current_process (vlib_main_t *vm)
 
static uword vlib_in_process_context (vlib_main_t *vm)
 
static uword vlib_current_process (vlib_main_t *vm)
 
static uword vlib_process_suspend_time_is_zero (f64 dt)
 Returns TRUE if a process suspend time is less than 1us. More...
 
static uword vlib_process_suspend (vlib_main_t *vm, f64 dt)
 Suspend a vlib cooperative multi-tasking thread for a period of time. More...
 
static void vlib_process_free_event_type (vlib_process_t *p, uword t, uword is_one_time_event)
 
static void vlib_process_maybe_free_event_type (vlib_process_t *p, uword t)
 
static void * vlib_process_get_event_data (vlib_main_t *vm, uword *return_event_type_opaque)
 
static void vlib_process_put_event_data (vlib_main_t *vm, void *event_data)
 
static uword vlib_process_get_events (vlib_main_t *vm, uword **data_vector)
 Return the first event type which has occurred and a vector of per-event data of that type, or a timeout indication. More...
 
static uword vlib_process_get_events_helper (vlib_process_t *p, uword t, uword **data_vector)
 
static uword vlib_process_get_events_with_type (vlib_main_t *vm, uword **data_vector, uword with_type_opaque)
 
static uwordvlib_process_wait_for_event (vlib_main_t *vm)
 
static uword vlib_process_wait_for_one_time_event (vlib_main_t *vm, uword **data_vector, uword with_type_index)
 
static uword vlib_process_wait_for_event_with_type (vlib_main_t *vm, uword **data_vector, uword with_type_opaque)
 
static f64 vlib_process_wait_for_event_or_clock (vlib_main_t *vm, f64 dt)
 Suspend a cooperative multi-tasking thread Waits for an event, or for the indicated number of seconds to elapse. More...
 
static vlib_process_event_type_tvlib_process_new_event_type (vlib_process_t *p, uword with_type_opaque)
 
static uword vlib_process_create_one_time_event (vlib_main_t *vm, uword node_index, uword with_type_opaque)
 
static void vlib_process_delete_one_time_event (vlib_main_t *vm, uword node_index, uword t)
 
static void * vlib_process_signal_event_helper (vlib_node_main_t *nm, vlib_node_t *n, vlib_process_t *p, uword t, uword n_data_elts, uword n_data_elt_bytes)
 
static void * vlib_process_signal_event_data (vlib_main_t *vm, uword node_index, uword type_opaque, uword n_data_elts, uword n_data_elt_bytes)
 
static void * vlib_process_signal_event_at_time (vlib_main_t *vm, f64 dt, uword node_index, uword type_opaque, uword n_data_elts, uword n_data_elt_bytes)
 
static void * vlib_process_signal_one_time_event_data (vlib_main_t *vm, uword node_index, uword type_index, uword n_data_elts, uword n_data_elt_bytes)
 
static void vlib_process_signal_event (vlib_main_t *vm, uword node_index, uword type_opaque, uword data)
 
static void vlib_process_signal_event_pointer (vlib_main_t *vm, uword node_index, uword type_opaque, void *data)
 
static void vlib_process_signal_one_time_event (vlib_main_t *vm, uword node_index, uword type_index, uword data)
 
static void vlib_signal_one_time_waiting_process (vlib_main_t *vm, vlib_one_time_waiting_process_t *p)
 
static void vlib_signal_one_time_waiting_process_vector (vlib_main_t *vm, vlib_one_time_waiting_process_t **wps)
 
static void vlib_current_process_wait_for_one_time_event (vlib_main_t *vm, vlib_one_time_waiting_process_t *p)
 
static void vlib_current_process_wait_for_one_time_event_vector (vlib_main_t *vm, vlib_one_time_waiting_process_t **wps)
 
static u32 vlib_node_runtime_update_main_loop_vector_stats (vlib_main_t *vm, vlib_node_runtime_t *node, uword n_vectors)
 
static f64 vlib_node_vectors_per_main_loop_as_float (vlib_main_t *vm, u32 node_index)
 
static u32 vlib_node_vectors_per_main_loop_as_integer (vlib_main_t *vm, u32 node_index)
 
void vlib_frame_free (vlib_main_t *vm, vlib_node_runtime_t *r, vlib_frame_t *f)
 
uword vlib_node_get_next (vlib_main_t *vm, uword node, uword next_node)
 
uword vlib_node_add_next_with_slot (vlib_main_t *vm, uword node, uword next_node, uword slot)
 
static uword vlib_node_add_next (vlib_main_t *vm, uword node, uword next_node)
 
uword vlib_node_add_named_next_with_slot (vlib_main_t *vm, uword node, char *next_name, uword slot)
 
static uword vlib_node_add_named_next (vlib_main_t *vm, uword node, char *name)
 
vlib_node_tvlib_get_node_by_name (vlib_main_t *vm, u8 *name)
 
void vlib_node_rename (vlib_main_t *vm, u32 node_index, char *fmt,...)
 
u32 vlib_register_node (vlib_main_t *vm, vlib_node_registration_t *r)
 
void vlib_register_all_static_nodes (vlib_main_t *vm)
 
void vlib_start_process (vlib_main_t *vm, uword process_index)
 
void vlib_node_sync_stats (vlib_main_t *vm, vlib_node_t *n)
 
clib_error_tvlib_node_main_init (vlib_main_t *vm)
 
static void vlib_node_increment_counter (vlib_main_t *vm, u32 node_index, u32 counter_index, u64 increment)
 

Variables

format_function_t format_vlib_node_graph
 
format_function_t format_vlib_node_name
 
format_function_t format_vlib_next_node_name
 
format_function_t format_vlib_node_and_next
 
format_function_t format_vlib_cpu_time
 
format_function_t format_vlib_time
 
unformat_function_t unformat_vlib_node
 

Detailed Description

vlib node functions

Definition in file node_funcs.h.

Macro Definition Documentation

#define VLIB_FRAME_VECTOR_ALIGN   (1 << 4)

Definition at line 239 of file node_funcs.h.

#define vlib_get_new_next_frame (   vm,
  node,
  next_index,
  vectors,
  n_vectors_left 
)
Value:
vlib_get_next_frame_macro (vm, node, next_index, \
vectors, n_vectors_left, \
/* alloc new frame */ 1)
vlib_main_t * vm
Definition: buffer.c:276
#define vlib_get_next_frame_macro(vm, node, next_index, vectors, n_vectors_left, alloc_new_frame)
Definition: node_funcs.h:327

Definition at line 355 of file node_funcs.h.

#define vlib_get_next_frame (   vm,
  node,
  next_index,
  vectors,
  n_vectors_left 
)
Value:
vlib_get_next_frame_macro (vm, node, next_index, \
vectors, n_vectors_left, \
/* alloc new frame */ 0)
vlib_main_t * vm
Definition: buffer.c:276
#define vlib_get_next_frame_macro(vm, node, next_index, vectors, n_vectors_left, alloc_new_frame)
Definition: node_funcs.h:327

Get pointer to next frame vector data by (vlib_node_runtime_t, next_index).

Standard single/dual loop boilerplate element.

Attention
This is a MACRO, with SIDE EFFECTS.
Parameters
vmvlib_main_t pointer, varies by thread
nodecurrent node vlib_node_runtime_t pointer
next_indexrequested graph arc index
Returns
vectors – pointer to next available vector slot
n_vectors_left – number of vector slots available

Definition at line 350 of file node_funcs.h.

#define vlib_get_next_frame_macro (   vm,
  node,
  next_index,
  vectors,
  n_vectors_left,
  alloc_new_frame 
)
Value:
do { \
= vlib_get_next_frame_internal ((vm), (node), (next_index), \
(alloc_new_frame)); \
u32 _n = _f->n_vectors; \
(vectors) = vlib_frame_vector_args (_f) + _n * sizeof ((vectors)[0]); \
(n_vectors_left) = VLIB_FRAME_SIZE - _n; \
} while (0)
#define VLIB_FRAME_SIZE
Definition: node.h:328
vlib_main_t * vm
Definition: buffer.c:276
unsigned int u32
Definition: types.h:88
struct vlib_frame_t vlib_frame_t
vlib_frame_t * vlib_get_next_frame_internal(vlib_main_t *vm, vlib_node_runtime_t *node, u32 next_index, u32 alloc_new_frame)
Definition: main.c:361
static void * vlib_frame_vector_args(vlib_frame_t *f)
Get pointer to frame vector data.
Definition: node_funcs.h:253

Definition at line 327 of file node_funcs.h.

#define vlib_set_next_frame (   vm,
  node,
  next_index,
  v 
)
Value:
({ \
uword _n_left; \
vlib_get_next_frame ((vm), (node), (next_index), (v), _n_left); \
ASSERT (_n_left > 0); \
vlib_put_next_frame ((vm), (node), (next_index), _n_left - 1); \
(v); \
})
#define v
Definition: acl.c:246
#define vlib_get_next_frame(vm, node, next_index, vectors, n_vectors_left)
Get pointer to next frame vector data by (vlib_node_runtime_t, next_index).
Definition: node_funcs.h:350
vlib_main_t * vm
Definition: buffer.c:276
#define ASSERT(truth)
u64 uword
Definition: types.h:112
void vlib_put_next_frame(vlib_main_t *vm, vlib_node_runtime_t *r, u32 next_index, u32 n_packets_left)
Release pointer to next frame vector data.
Definition: main.c:459

Definition at line 373 of file node_funcs.h.

Function Documentation

static uword vlib_current_process ( vlib_main_t vm)
inlinestatic

Definition at line 410 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_current_process_wait_for_one_time_event ( vlib_main_t vm,
vlib_one_time_waiting_process_t p 
)
inlinestatic

Definition at line 979 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_current_process_wait_for_one_time_event_vector ( vlib_main_t vm,
vlib_one_time_waiting_process_t **  wps 
)
inlinestatic

Definition at line 992 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void* vlib_frame_args ( vlib_frame_t f)
inlinestatic

Get pointer to frame scalar data.

Warning
This is almost certainly not the function you wish to call. See vlib_frame_vector_args instead.
Parameters
fvlib_frame_t pointer
Returns
arbitrary node scalar data
See also
vlib_frame_vector_args

Definition at line 270 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_frame_free ( vlib_main_t vm,
vlib_node_runtime_t r,
vlib_frame_t f 
)

Definition at line 216 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 vlib_frame_index ( vlib_main_t vm,
vlib_frame_t f 
)
inlinestatic

Definition at line 231 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 vlib_frame_index_no_check ( vlib_main_t vm,
vlib_frame_t f 
)
inlinestatic

Definition at line 210 of file node_funcs.h.

+ Here is the caller graph for this function:

static void* vlib_frame_vector_args ( vlib_frame_t f)
inlinestatic

Get pointer to frame vector data.

Parameters
fvlib_frame_t pointer
Returns
pointer to first vector element in frame

Definition at line 253 of file node_funcs.h.

+ Here is the call graph for this function:

static u32 vlib_frame_vector_byte_offset ( u32  scalar_size)
inlinestatic

Definition at line 242 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_process_t* vlib_get_current_process ( vlib_main_t vm)
inlinestatic

Definition at line 397 of file node_funcs.h.

+ Here is the caller graph for this function:

static vlib_frame_t* vlib_get_frame ( vlib_main_t vm,
uword  frame_index 
)
inlinestatic

Definition at line 223 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_frame_t* vlib_get_frame_no_check ( vlib_main_t vm,
uword  frame_index 
)
inlinestatic

Definition at line 199 of file node_funcs.h.

+ Here is the caller graph for this function:

vlib_frame_t* vlib_get_frame_to_node ( vlib_main_t vm,
u32  to_node_index 
)

Definition at line 187 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

vlib_frame_t* vlib_get_next_frame_internal ( vlib_main_t vm,
vlib_node_runtime_t node,
u32  next_index,
u32  alloc_new_frame 
)

Definition at line 361 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_node_t* vlib_get_next_node ( vlib_main_t vm,
u32  node_index,
u32  next_index 
)
inlinestatic

Get vlib node by graph arc (next) index.

Parameters
vmvlib_main_t pointer, varies by thread
node_indexindex of original node
next_indexgraph arc index
Returns
pointer to the vlib_node_t at the end of the indicated arc

Definition at line 71 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_node_t* vlib_get_node ( vlib_main_t vm,
u32  i 
)
inlinestatic

Get vlib node by index.

Warning
This function will ASSERT if i is out of range.
Parameters
vmvlib_main_t pointer, varies by thread
inode index.
Returns
pointer to the requested vlib_node_t.

Definition at line 58 of file node_funcs.h.

vlib_node_t* vlib_get_node_by_name ( vlib_main_t vm,
u8 name 
)

Definition at line 45 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_process_t* vlib_get_process_from_node ( vlib_main_t vm,
vlib_node_t node 
)
inlinestatic

Definition at line 190 of file node_funcs.h.

+ Here is the caller graph for this function:

static uword vlib_in_process_context ( vlib_main_t vm)
inlinestatic

Definition at line 404 of file node_funcs.h.

+ Here is the caller graph for this function:

static uword vlib_node_add_named_next ( vlib_main_t vm,
uword  node,
char *  name 
)
inlinestatic

Definition at line 1077 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uword vlib_node_add_named_next_with_slot ( vlib_main_t vm,
uword  node,
char *  next_name,
uword  slot 
)

Definition at line 233 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_node_add_next ( vlib_main_t vm,
uword  node,
uword  next_node 
)
inlinestatic

Definition at line 1065 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uword vlib_node_add_next_with_slot ( vlib_main_t vm,
uword  node,
uword  next_node,
uword  slot 
)

Definition at line 176 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

uword vlib_node_get_next ( vlib_main_t vm,
uword  node,
uword  next_node 
)

Definition at line 155 of file node.c.

+ Here is the caller graph for this function:

static vlib_next_frame_t* vlib_node_get_next_frame ( vlib_main_t vm,
u32  node_index,
u32  next_index 
)
inlinestatic

Get pointer to frame by (node_index, next_index).

Warning
This is not a function that you should call directly. See vlib_get_next_frame instead.
Parameters
vmvlib_main_t pointer, varies by thread
node_indexindex of the node
next_indexgraph arc index
Returns
pointer to the requested vlib_next_frame_t
See also
vlib_get_next_frame

Definition at line 311 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_node_runtime_t* vlib_node_get_runtime ( vlib_main_t vm,
u32  node_index 
)
inlinestatic

Get node runtime by node index.

Parameters
vmvlib_main_t pointer, varies by thread
node_indexindex of node
Returns
pointer to the indicated vlib_node_runtime_t

Definition at line 88 of file node_funcs.h.

static void* vlib_node_get_runtime_data ( vlib_main_t vm,
u32  node_index 
)
inlinestatic

Get node runtime private data by node index.

Parameters
vmvlib_main_t pointer, varies by thread
node_indexindex of the node
Returns
pointer to the indicated vlib_node_runtime_t private data

Definition at line 109 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_node_increment_counter ( vlib_main_t vm,
u32  node_index,
u32  counter_index,
u64  increment 
)
inlinestatic

Definition at line 1115 of file node_funcs.h.

+ Here is the call graph for this function:

clib_error_t* vlib_node_main_init ( vlib_main_t vm)

Definition at line 518 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_node_rename ( vlib_main_t vm,
u32  node_index,
char *  fmt,
  ... 
)

Definition at line 76 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_next_frame_t* vlib_node_runtime_get_next_frame ( vlib_main_t vm,
vlib_node_runtime_t n,
u32  next_index 
)
inlinestatic

Definition at line 276 of file node_funcs.h.

+ Here is the caller graph for this function:

static u32 vlib_node_runtime_update_main_loop_vector_stats ( vlib_main_t vm,
vlib_node_runtime_t node,
uword  n_vectors 
)
inlinestatic

Definition at line 1002 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_node_set_interrupt_pending ( vlib_main_t vm,
u32  node_index 
)
inlinestatic

Definition at line 181 of file node_funcs.h.

+ Here is the caller graph for this function:

static void vlib_node_set_runtime_data ( vlib_main_t vm,
u32  node_index,
void *  runtime_data,
u32  n_runtime_data_bytes 
)
inlinestatic

Set node runtime private data.

Parameters
vmvlib_main_t pointer, varies by thread
node_indexindex of the node
runtime_dataarbitrary runtime private data
n_runtime_data_bytessize of runtime private data

Definition at line 123 of file node_funcs.h.

+ Here is the call graph for this function:

static void vlib_node_set_state ( vlib_main_t vm,
u32  node_index,
vlib_node_state_t  new_state 
)
inlinestatic

Set node dispatch state.

Parameters
vmvlib_main_t pointer, varies by thread
node_indexindex of the node
new_statenew state for node, see vlib_node_state_t

Definition at line 146 of file node_funcs.h.

+ Here is the caller graph for this function:

void vlib_node_sync_stats ( vlib_main_t vm,
vlib_node_t n 
)

Definition at line 575 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static f64 vlib_node_vectors_per_main_loop_as_float ( vlib_main_t vm,
u32  node_index 
)
inlinestatic

Definition at line 1031 of file node_funcs.h.

+ Here is the call graph for this function:

static u32 vlib_node_vectors_per_main_loop_as_integer ( vlib_main_t vm,
u32  node_index 
)
inlinestatic

Definition at line 1042 of file node_funcs.h.

+ Here is the call graph for this function:

static uword vlib_process_create_one_time_event ( vlib_main_t vm,
uword  node_index,
uword  with_type_opaque 
)
inlinestatic

Definition at line 725 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_process_delete_one_time_event ( vlib_main_t vm,
uword  node_index,
uword  t 
)
inlinestatic

Definition at line 742 of file node_funcs.h.

+ Here is the call graph for this function:

static void vlib_process_free_event_type ( vlib_process_t p,
uword  t,
uword  is_one_time_event 
)
inlinestatic

Definition at line 454 of file node_funcs.h.

+ Here is the caller graph for this function:

static void* vlib_process_get_event_data ( vlib_main_t vm,
uword return_event_type_opaque 
)
inlinestatic

Definition at line 473 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_process_get_events ( vlib_main_t vm,
uword **  data_vector 
)
inlinestatic

Return the first event type which has occurred and a vector of per-event data of that type, or a timeout indication.

Parameters
vm- vlib_main_t pointer
data_vector- pointer to a (uword *) vector to receive event data
Returns
either an event type and a vector of per-event instance data, or ~0 to indicate a timeout.

Definition at line 526 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_process_get_events_helper ( vlib_process_t p,
uword  t,
uword **  data_vector 
)
inlinestatic

Definition at line 560 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_process_get_events_with_type ( vlib_main_t vm,
uword **  data_vector,
uword  with_type_opaque 
)
inlinestatic

Definition at line 581 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_process_maybe_free_event_type ( vlib_process_t p,
uword  t 
)
inlinestatic

Definition at line 465 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_process_event_type_t* vlib_process_new_event_type ( vlib_process_t p,
uword  with_type_opaque 
)
inlinestatic

Definition at line 716 of file node_funcs.h.

+ Here is the caller graph for this function:

static void vlib_process_put_event_data ( vlib_main_t vm,
void *  event_data 
)
inlinestatic

Definition at line 510 of file node_funcs.h.

+ Here is the caller graph for this function:

static void vlib_process_signal_event ( vlib_main_t vm,
uword  node_index,
uword  type_opaque,
uword  data 
)
inlinestatic

Definition at line 930 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void* vlib_process_signal_event_at_time ( vlib_main_t vm,
f64  dt,
uword  node_index,
uword  type_opaque,
uword  n_data_elts,
uword  n_data_elt_bytes 
)
inlinestatic

Definition at line 854 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void* vlib_process_signal_event_data ( vlib_main_t vm,
uword  node_index,
uword  type_opaque,
uword  n_data_elts,
uword  n_data_elt_bytes 
)
inlinestatic

Definition at line 828 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void* vlib_process_signal_event_helper ( vlib_node_main_t nm,
vlib_node_t n,
vlib_process_t p,
uword  t,
uword  n_data_elts,
uword  n_data_elt_bytes 
)
inlinestatic

Definition at line 754 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_process_signal_event_pointer ( vlib_main_t vm,
uword  node_index,
uword  type_opaque,
void *  data 
)
inlinestatic

Definition at line 939 of file node_funcs.h.

+ Here is the call graph for this function:

static void vlib_process_signal_one_time_event ( vlib_main_t vm,
uword  node_index,
uword  type_index,
uword  data 
)
inlinestatic

Definition at line 949 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void* vlib_process_signal_one_time_event_data ( vlib_main_t vm,
uword  node_index,
uword  type_index,
uword  n_data_elts,
uword  n_data_elt_bytes 
)
inlinestatic

Definition at line 916 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_process_suspend ( vlib_main_t vm,
f64  dt 
)
inlinestatic

Suspend a vlib cooperative multi-tasking thread for a period of time.

Parameters
vm- vlib_main_t *
dt- suspend interval in seconds
Returns
VLIB_PROCESS_RESUME_LONGJMP_RESUME, routinely ignored

Definition at line 432 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_process_suspend_time_is_zero ( f64  dt)
inlinestatic

Returns TRUE if a process suspend time is less than 1us.

Parameters
dt- remaining poll time in seconds
Returns
1 if dt < 1e-6, 0 otherwise

Definition at line 420 of file node_funcs.h.

+ Here is the caller graph for this function:

static uword* vlib_process_wait_for_event ( vlib_main_t vm)
inlinestatic

Definition at line 603 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static f64 vlib_process_wait_for_event_or_clock ( vlib_main_t vm,
f64  dt 
)
inlinestatic

Suspend a cooperative multi-tasking thread Waits for an event, or for the indicated number of seconds to elapse.

Parameters
vm- vlib_main_t pointer
dt- timeout, in seconds.
Returns
the remaining time interval

Definition at line 683 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_process_wait_for_event_with_type ( vlib_main_t vm,
uword **  data_vector,
uword  with_type_opaque 
)
inlinestatic

Definition at line 648 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_process_wait_for_one_time_event ( vlib_main_t vm,
uword **  data_vector,
uword  with_type_index 
)
inlinestatic

Definition at line 624 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_put_frame_to_node ( vlib_main_t vm,
u32  to_node_index,
vlib_frame_t f 
)

Definition at line 196 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_put_next_frame ( vlib_main_t vm,
vlib_node_runtime_t r,
u32  next_index,
u32  n_packets_left 
)

Release pointer to next frame vector data.

Standard single/dual loop boilerplate element.

Parameters
vmvlib_main_t pointer, varies by thread
rcurrent node vlib_node_runtime_t pointer
next_indexgraph arc index
n_packets_leftnumber of slots still available in vector

Definition at line 459 of file main.c.

+ Here is the call graph for this function:

void vlib_register_all_static_nodes ( vlib_main_t vm)

Definition at line 489 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u32 vlib_register_node ( vlib_main_t vm,
vlib_node_registration_t r 
)

Definition at line 469 of file node.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_set_next_frame_buffer ( vlib_main_t vm,
vlib_node_runtime_t node,
u32  next_index,
u32  buffer_index 
)
inlinestatic

Definition at line 383 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_signal_one_time_waiting_process ( vlib_main_t vm,
vlib_one_time_waiting_process_t p 
)
inlinestatic

Definition at line 960 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_signal_one_time_waiting_process_vector ( vlib_main_t vm,
vlib_one_time_waiting_process_t **  wps 
)
inlinestatic

Definition at line 969 of file node_funcs.h.

+ Here is the call graph for this function:

void vlib_start_process ( vlib_main_t vm,
uword  process_index 
)

Definition at line 1332 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

format_function_t format_vlib_cpu_time

Definition at line 1109 of file node_funcs.h.

format_function_t format_vlib_next_node_name

Definition at line 1107 of file node_funcs.h.

format_function_t format_vlib_node_and_next

Definition at line 1108 of file node_funcs.h.

format_function_t format_vlib_node_graph

Definition at line 1105 of file node_funcs.h.

format_function_t format_vlib_node_name

Definition at line 1106 of file node_funcs.h.

format_function_t format_vlib_time

Definition at line 1110 of file node_funcs.h.

unformat_function_t unformat_vlib_node

Definition at line 1112 of file node_funcs.h.