FD.io VPP  v18.10-34-gcce845e
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)
 
#define foreach_weak_reference_stub
 

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)
 
void elog_post_mortem_dump (void)
 
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)
 
static void add_trajectory_trace (vlib_buffer_t *b, u32 node_index)
 
static_always_inline 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)
 
static u64 dispatch_pending_node (vlib_main_t *vm, uword pending_frame_index, 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)
 
void vl_api_send_pending_rpc_requests (vlib_main_t *)
 
static_always_inline void vlib_main_or_worker_loop (vlib_main_t *vm, int is_main)
 
static void vlib_main_loop (vlib_main_t *vm)
 
void vlib_worker_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 *volatile vm, unformat_input_t *input)
 

Variables

 CJ_GLOBAL_LOG_PROTOTYPE
 
u32 wraps
 
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
 
 foreach_weak_reference_stub
 

Macro Definition Documentation

#define foreach_weak_reference_stub
Value:
clib_error_t * vlibmemory_init(vlib_main_t *vm)
Definition: memory_api.c:896
clib_error_t * map_api_segment_init(vlib_main_t *vm)
Definition: memory_api.c:468
clib_error_t * vpe_api_init(vlib_main_t *vm)
Definition: api.c:544
clib_error_t * vlib_map_stat_segment_init(void)
Definition: stat_segment.c:213

Definition at line 1675 of file main.c.

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

Definition at line 53 of file main.c.

#define VLIB_FRAME_SIZE_EXTRA   4

Function Documentation

static void add_trajectory_trace ( vlib_buffer_t b,
u32  node_index 
)
inlinestatic

Definition at line 904 of file main.c.

+ Here is the caller graph for this function:

static_always_inline 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 915 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u64 dispatch_pending_node ( vlib_main_t vm,
uword  pending_frame_index,
u64  last_time_stamp 
)
static

Definition at line 1088 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 1274 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 1355 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 1671 of file main.c.

+ Here is the caller graph for this function:

void elog_post_mortem_dump ( void  )

Definition at line 707 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_resize ( vlib_main_t vm,
unformat_input_t input,
vlib_cli_command_t cmd 
)
static

Definition at line 773 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 753 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 670 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 833 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 805 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 733 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 95 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 243 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 347 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vl_api_send_pending_rpc_requests ( vlib_main_t vm)

Definition at line 1431 of file main.c.

+ 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 653 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 868 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 169 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 115 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 58 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 83 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 211 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 862 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 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  allocate_new_next_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:

int vlib_main ( vlib_main_t *volatile  vm,
unformat_input_t input 
)

Definition at line 1689 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 1641 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 1627 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static_always_inline void vlib_main_or_worker_loop ( vlib_main_t vm,
int  is_main 
)

Definition at line 1437 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 273 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 541 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 608 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 571 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static uword vlib_process_bootstrap ( uword  _a)
static

Definition at line 1216 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 1261 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 1202 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 1243 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 559 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 644 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 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 455 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 419 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 1347 of file main.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void vlib_worker_loop ( vlib_main_t vm)

Definition at line 1633 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 49 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:653

(constructor) VLIB_CLI_COMMAND (elog_clear_cli)

Definition at line 661 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:773

(constructor) VLIB_CLI_COMMAND (elog_resize_cli)

Definition at line 795 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:753

(constructor) VLIB_CLI_COMMAND (elog_restart_cli)

Definition at line 765 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:670

(constructor) VLIB_CLI_COMMAND (elog_save_cli)

Definition at line 725 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:833

(constructor) VLIB_CLI_COMMAND (elog_show_cli)

Definition at line 854 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:733

(constructor) VLIB_CLI_COMMAND (elog_stop_cli)

Definition at line 745 of file main.c.

foreach_weak_reference_stub

Definition at line 1684 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:243

(constructor) VLIB_CLI_COMMAND (show_frame_stats_cli)

Definition at line 264 of file main.c.

vlib_main_t vlib_global_main

Definition at line 1638 of file main.c.

u32 wraps

Definition at line 55 of file main.c.