FD.io VPP  v18.01.2-1-g9b554f3
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 vlib_node_state_t vlib_node_get_state (vlib_main_t *vm, u32 node_index)
 Get 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 uword vlib_in_process_context (vlib_main_t *vm)
 
static vlib_process_tvlib_get_current_process (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 10us. 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_event_mt (vlib_main_t *vm, uword node_index, uword type_opaque, uword data)
 Signal event to process from any thread. More...
 
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 253 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:283
#define vlib_get_next_frame_macro(vm, node, next_index, vectors, n_vectors_left, alloc_new_frame)
Definition: node_funcs.h:341

Definition at line 369 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:283
#define vlib_get_next_frame_macro(vm, node, next_index, vectors, n_vectors_left, alloc_new_frame)
Definition: node_funcs.h:341

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 364 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:283
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:356
static void * vlib_frame_vector_args(vlib_frame_t *f)
Get pointer to frame vector data.
Definition: node_funcs.h:267

Definition at line 341 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:341
#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:364
vlib_main_t * vm
Definition: buffer.c:283
#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:454

Definition at line 387 of file node_funcs.h.

Function Documentation

static uword vlib_current_process ( vlib_main_t vm)
inlinestatic

Definition at line 426 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 1022 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 1035 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 284 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 211 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 245 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 224 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 267 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 256 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 417 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 ( vlib_main_t vm,
uword  frame_index 
)
inlinestatic

Definition at line 237 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 216 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 182 of file main.c.

+ Here is the call 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 356 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 72 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 59 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 207 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 411 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 1120 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 262 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 1108 of file node_funcs.h.

+ Here is the call 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 205 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 184 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 325 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 89 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 110 of file node_funcs.h.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static vlib_node_state_t vlib_node_get_state ( vlib_main_t vm,
u32  node_index 
)
inlinestatic

Get node dispatch state.

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

Definition at line 187 of file node_funcs.h.

+ 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 1158 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 547 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 102 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 290 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 1045 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 196 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_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 124 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 147 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 570 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 1074 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 1085 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 740 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 757 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 470 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 489 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 542 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 576 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 597 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 481 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 731 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 526 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 950 of file node_funcs.h.

+ Here is the call 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 873 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 844 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 769 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_mt ( vlib_main_t vm,
uword  node_index,
uword  type_opaque,
uword  data 
)
inlinestatic

Signal event to process from any thread.

When in doubt, use this.

Definition at line 974 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 959 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 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_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 936 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 448 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 10us.

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

Definition at line 436 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 619 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 699 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 664 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 640 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 191 of file main.c.

+ Here is the call 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 454 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 518 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 498 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 397 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 1003 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 1012 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 1344 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 1152 of file node_funcs.h.

format_function_t format_vlib_next_node_name

Definition at line 1150 of file node_funcs.h.

format_function_t format_vlib_node_and_next

Definition at line 1151 of file node_funcs.h.

format_function_t format_vlib_node_graph

Definition at line 1148 of file node_funcs.h.

format_function_t format_vlib_node_name

Definition at line 1149 of file node_funcs.h.

format_function_t format_vlib_time

Definition at line 1153 of file node_funcs.h.

unformat_function_t unformat_vlib_node

Definition at line 1155 of file node_funcs.h.