FD.io VPP  v16.09
Vector Packet Processing
main.c File Reference
+ Include dependency graph for main.c:

Go to the source code of this file.

Data Structures

struct  vlib_process_bootstrap_args_t
 

Macros

#define VLIB_FRAME_SIZE_ALLOC   (VLIB_FRAME_SIZE + 4)
 
#define VLIB_FRAME_SIZE_EXTRA   4
 
#define VLIB_FRAME_MAGIC   (0xabadc0ed)
 

Functions

static u32 vlib_frame_bytes (u32 n_scalar_bytes, u32 n_vector_bytes)
 
static u32vlib_frame_find_magic (vlib_frame_t *f, vlib_node_t *node)
 
static vlib_frame_size_tget_frame_size_info (vlib_node_main_t *nm, u32 n_scalar_bytes, u32 n_vector_bytes)
 
static u32 vlib_frame_alloc_to_node (vlib_main_t *vm, u32 to_node_index, u32 frame_flags)
 
static u32 vlib_frame_alloc (vlib_main_t *vm, vlib_node_runtime_t *from_node_runtime, u32 to_next_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)
 
void vlib_frame_free (vlib_main_t *vm, vlib_node_runtime_t *r, vlib_frame_t *f)
 
static clib_error_tshow_frame_stats (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static void vlib_next_frame_change_ownership (vlib_main_t *vm, vlib_node_runtime_t *node_runtime, u32 next_index)
 
static void validate_frame_magic (vlib_main_t *vm, vlib_frame_t *f, vlib_node_t *n, uword next_index)
 
vlib_frame_tvlib_get_next_frame_internal (vlib_main_t *vm, vlib_node_runtime_t *node, u32 next_index, u32 allocate_new_next_frame)
 
static void vlib_put_next_frame_validate (vlib_main_t *vm, vlib_node_runtime_t *rt, u32 next_index, u32 n_vectors_left)
 
void vlib_put_next_frame (vlib_main_t *vm, vlib_node_runtime_t *r, u32 next_index, u32 n_vectors_left)
 Release pointer to next frame vector data. More...
 
never_inline void vlib_node_runtime_sync_stats (vlib_main_t *vm, vlib_node_runtime_t *r, uword n_calls, uword n_vectors, uword n_clocks)
 
static void vlib_process_sync_stats (vlib_main_t *vm, vlib_process_t *p, uword n_calls, uword n_vectors, uword n_clocks)
 
void vlib_node_sync_stats (vlib_main_t *vm, vlib_node_t *n)
 
static u32 vlib_node_runtime_update_stats (vlib_main_t *vm, vlib_node_runtime_t *node, uword n_calls, uword n_vectors, uword n_clocks)
 
static void vlib_process_update_stats (vlib_main_t *vm, vlib_process_t *p, uword n_calls, uword n_vectors, uword n_clocks)
 
static clib_error_tvlib_cli_elog_clear (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_telog_save_buffer (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_telog_stop (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_telog_restart (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static clib_error_telog_resize (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
static void elog_show_buffer_internal (vlib_main_t *vm, u32 n_events_to_show)
 
static clib_error_telog_show_buffer (vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
 
void vlib_gdb_show_event_log (void)
 
static void vlib_elog_main_loop_event (vlib_main_t *vm, u32 node_index, u64 time, u32 n_vectors, u32 is_return)
 
void vlib_dump_context_trace (vlib_main_t *vm, u32 bi)
 
u64 dispatch_node (vlib_main_t *vm, vlib_node_runtime_t *node, vlib_node_type_t type, vlib_node_state_t dispatch_state, vlib_frame_t *frame, u64 last_time_stamp)
 
u64 dispatch_pending_node (vlib_main_t *vm, vlib_pending_frame_t *p, u64 last_time_stamp)
 
static uword vlib_process_stack_is_valid (vlib_process_t *p)
 
static uword vlib_process_bootstrap (uword _a)
 
static_always_inline uword vlib_process_startup (vlib_main_t *vm, vlib_process_t *p, vlib_frame_t *f)
 
static_always_inline uword vlib_process_resume (vlib_process_t *p)
 
static u64 dispatch_process (vlib_main_t *vm, vlib_process_t *p, vlib_frame_t *f, u64 last_time_stamp)
 
void vlib_start_process (vlib_main_t *vm, uword process_index)
 
static u64 dispatch_suspended_process (vlib_main_t *vm, uword process_index, u64 last_time_stamp)
 
static void vlib_main_loop (vlib_main_t *vm)
 
static clib_error_tvlib_main_configure (vlib_main_t *vm, unformat_input_t *input)
 
static void dummy_queue_signal_callback (vlib_main_t *vm)
 
int vlib_main (vlib_main_t *vm, unformat_input_t *input)
 

Variables

 CJ_GLOBAL_LOG_PROTOTYPE
 
static vlib_cli_command_t show_frame_stats_cli
 (constructor) VLIB_CLI_COMMAND (show_frame_stats_cli) More...
 
static vlib_cli_command_t elog_clear_cli
 (constructor) VLIB_CLI_COMMAND (elog_clear_cli) More...
 
static vlib_cli_command_t elog_save_cli
 (constructor) VLIB_CLI_COMMAND (elog_save_cli) More...
 
static vlib_cli_command_t elog_stop_cli
 (constructor) VLIB_CLI_COMMAND (elog_stop_cli) More...
 
static vlib_cli_command_t elog_restart_cli
 (constructor) VLIB_CLI_COMMAND (elog_restart_cli) More...
 
static vlib_cli_command_t elog_resize_cli
 (constructor) VLIB_CLI_COMMAND (elog_resize_cli) More...
 
static vlib_cli_command_t elog_show_cli
 (constructor) VLIB_CLI_COMMAND (elog_show_cli) More...
 
vlib_main_t vlib_global_main
 

Macro Definition Documentation

#define VLIB_FRAME_MAGIC   (0xabadc0ed)
#define VLIB_FRAME_SIZE_ALLOC   (VLIB_FRAME_SIZE + 4)

Definition at line 51 of file main.c.

#define VLIB_FRAME_SIZE_EXTRA   4

Function Documentation

u64 dispatch_node ( vlib_main_t vm,
vlib_node_runtime_t node,
vlib_node_type_t  type,
vlib_node_state_t  dispatch_state,
vlib_frame_t frame,
u64  last_time_stamp 
)

Definition at line 919 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u64 dispatch_pending_node ( vlib_main_t vm,
vlib_pending_frame_t p,
u64  last_time_stamp 
)

Definition at line 1087 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u64 dispatch_process ( vlib_main_t vm,
vlib_process_t p,
vlib_frame_t f,
u64  last_time_stamp 
)
static

Definition at line 1233 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u64 dispatch_suspended_process ( vlib_main_t vm,
uword  process_index,
u64  last_time_stamp 
)
static

Definition at line 1305 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void dummy_queue_signal_callback ( vlib_main_t vm)
static

Definition at line 1566 of file main.c.

+ Here is the caller graph for this function:

static clib_error_t* elog_resize ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 757 of file main.c.

+ Here is the call graph for this function:

static clib_error_t* elog_restart ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 737 of file main.c.

+ Here is the call graph for this function:

static clib_error_t* elog_save_buffer ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 672 of file main.c.

+ Here is the call graph for this function:

static clib_error_t* elog_show_buffer ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 817 of file main.c.

+ Here is the call graph for this function:

static void elog_show_buffer_internal ( vlib_main_t vm,
u32  n_events_to_show 
)
static

Definition at line 789 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* elog_stop ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 717 of file main.c.

+ Here is the call graph for this function:

static vlib_frame_size_t* get_frame_size_info ( vlib_node_main_t nm,
u32  n_scalar_bytes,
u32  n_vector_bytes 
)
static

Definition at line 91 of file main.c.

+ Here is the caller graph for this function:

static clib_error_t* show_frame_stats ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 246 of file main.c.

+ Here is the call graph for this function:

static void validate_frame_magic ( vlib_main_t vm,
vlib_frame_t f,
vlib_node_t n,
uword  next_index 
)
inlinestatic

Definition at line 350 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* vlib_cli_elog_clear ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 655 of file main.c.

+ Here is the call graph for this function:

void vlib_dump_context_trace ( vlib_main_t vm,
u32  bi 
)

Definition at line 873 of file main.c.

+ Here is the call graph for this function:

static void vlib_elog_main_loop_event ( vlib_main_t vm,
u32  node_index,
u64  time,
u32  n_vectors,
u32  is_return 
)
inlinestatic

Definition at line 852 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 vlib_frame_alloc ( vlib_main_t vm,
vlib_node_runtime_t from_node_runtime,
u32  to_next_index 
)
static

Definition at line 172 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 vlib_frame_alloc_to_node ( vlib_main_t vm,
u32  to_node_index,
u32  frame_flags 
)
static

Definition at line 111 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 vlib_frame_bytes ( u32  n_scalar_bytes,
u32  n_vector_bytes 
)
inlinestatic

Definition at line 54 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32* vlib_frame_find_magic ( vlib_frame_t f,
vlib_node_t node 
)
inlinestatic

Definition at line 79 of file main.c.

+ 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 214 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_gdb_show_event_log ( void  )

Definition at line 846 of file main.c.

+ Here is the call graph for this function:

vlib_frame_t* vlib_get_frame_to_node ( vlib_main_t vm,
u32  to_node_index 
)

Definition at line 185 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  allocate_new_next_frame 
)

Definition at line 359 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int vlib_main ( vlib_main_t vm,
unformat_input_t input 
)

Definition at line 1572 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static clib_error_t* vlib_main_configure ( vlib_main_t vm,
unformat_input_t input 
)
static

Definition at line 1538 of file main.c.

+ Here is the call graph for this function:

static void vlib_main_loop ( vlib_main_t vm)
static

Definition at line 1375 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_next_frame_change_ownership ( vlib_main_t vm,
vlib_node_runtime_t node_runtime,
u32  next_index 
)
static

Definition at line 276 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

never_inline void vlib_node_runtime_sync_stats ( vlib_main_t vm,
vlib_node_runtime_t r,
uword  n_calls,
uword  n_vectors,
uword  n_clocks 
)

Definition at line 543 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u32 vlib_node_runtime_update_stats ( vlib_main_t vm,
vlib_node_runtime_t node,
uword  n_calls,
uword  n_vectors,
uword  n_clocks 
)
inlinestatic

Definition at line 610 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_node_sync_stats ( vlib_main_t vm,
vlib_node_t n 
)

Definition at line 573 of file main.c.

+ Here is the caller graph for this function:

static uword vlib_process_bootstrap ( uword  _a)
static

Definition at line 1175 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline uword vlib_process_resume ( vlib_process_t p)

Definition at line 1220 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_process_stack_is_valid ( vlib_process_t p)
inlinestatic

Definition at line 1161 of file main.c.

+ Here is the caller graph for this function:

static_always_inline uword vlib_process_startup ( vlib_main_t vm,
vlib_process_t p,
vlib_frame_t f 
)

Definition at line 1202 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void vlib_process_sync_stats ( vlib_main_t vm,
vlib_process_t p,
uword  n_calls,
uword  n_vectors,
uword  n_clocks 
)
inlinestatic

Definition at line 561 of file main.c.

+ Here is the call graph for this function:

static void vlib_process_update_stats ( vlib_main_t vm,
vlib_process_t p,
uword  n_calls,
uword  n_vectors,
uword  n_clocks 
)
inlinestatic

Definition at line 646 of file main.c.

+ 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 194 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 457 of file main.c.

+ Here is the call graph for this function:

static void vlib_put_next_frame_validate ( vlib_main_t vm,
vlib_node_runtime_t rt,
u32  next_index,
u32  n_vectors_left 
)
static

Definition at line 421 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_start_process ( vlib_main_t vm,
uword  process_index 
)

Definition at line 1297 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

CJ_GLOBAL_LOG_PROTOTYPE

Definition at line 47 of file main.c.

vlib_cli_command_t elog_clear_cli
static
Initial value:
= {
.path = "event-logger clear",
.short_help = "Clear the event log",
.function = vlib_cli_elog_clear,
}
static clib_error_t * vlib_cli_elog_clear(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: main.c:655

(constructor) VLIB_CLI_COMMAND (elog_clear_cli)

Definition at line 663 of file main.c.

vlib_cli_command_t elog_resize_cli
static
Initial value:
= {
.path = "event-logger resize",
.short_help = "event-logger resize <nnn>",
.function = elog_resize,
}
static clib_error_t * elog_resize(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: main.c:757

(constructor) VLIB_CLI_COMMAND (elog_resize_cli)

Definition at line 779 of file main.c.

vlib_cli_command_t elog_restart_cli
static
Initial value:
= {
.path = "event-logger restart",
.short_help = "Restart the event-logger",
.function = elog_restart,
}
static clib_error_t * elog_restart(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: main.c:737

(constructor) VLIB_CLI_COMMAND (elog_restart_cli)

Definition at line 749 of file main.c.

vlib_cli_command_t elog_save_cli
static
Initial value:
= {
.path = "event-logger save",
.short_help = "event-logger save <filename> (saves log in /tmp/<filename>)",
.function = elog_save_buffer,
}
static clib_error_t * elog_save_buffer(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: main.c:672

(constructor) VLIB_CLI_COMMAND (elog_save_cli)

Definition at line 709 of file main.c.

vlib_cli_command_t elog_show_cli
static
Initial value:
= {
.path = "show event-logger",
.short_help = "Show event logger info",
.function = elog_show_buffer,
}
static clib_error_t * elog_show_buffer(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: main.c:817

(constructor) VLIB_CLI_COMMAND (elog_show_cli)

Definition at line 838 of file main.c.

vlib_cli_command_t elog_stop_cli
static
Initial value:
= {
.path = "event-logger stop",
.short_help = "Stop the event-logger",
.function = elog_stop,
}
static clib_error_t * elog_stop(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: main.c:717

(constructor) VLIB_CLI_COMMAND (elog_stop_cli)

Definition at line 729 of file main.c.

vlib_cli_command_t show_frame_stats_cli
static
Initial value:
= {
.path = "show vlib frame-allocation",
.short_help = "Show node dispatch frame statistics",
.function = show_frame_stats,
}
static clib_error_t * show_frame_stats(vlib_main_t *vm, unformat_input_t *input, vlib_cli_command_t *cmd)
Definition: main.c:246

(constructor) VLIB_CLI_COMMAND (show_frame_stats_cli)

Definition at line 267 of file main.c.

vlib_main_t vlib_global_main

Definition at line 1535 of file main.c.