FD.io VPP  v19.04.2-12-g66b1689
Vector Packet Processing
application_worker.c File Reference
+ Include dependency graph for application_worker.c:

Go to the source code of this file.

Typedefs

typedef int( app_send_evt_handler_fn) (app_worker_t *app, session_t *s, u8 lock)
 

Functions

app_worker_tapp_worker_alloc (application_t *app)
 
app_worker_tapp_worker_get (u32 wrk_index)
 
app_worker_tapp_worker_get_if_valid (u32 wrk_index)
 
void app_worker_free (app_worker_t *app_wrk)
 
application_tapp_worker_get_app (u32 wrk_index)
 
static segment_manager_tapp_worker_alloc_segment_manager (app_worker_t *app_wrk)
 
static int app_worker_alloc_session_fifos (segment_manager_t *sm, session_t *s)
 
int app_worker_init_listener (app_worker_t *app_wrk, session_t *ls)
 
int app_worker_start_listen (app_worker_t *app_wrk, app_listener_t *app_listener)
 
static void app_worker_stop_listen_session (app_worker_t *app_wrk, session_t *ls)
 
int app_worker_stop_listen (app_worker_t *app_wrk, app_listener_t *al)
 
int app_worker_init_accepted (session_t *s)
 
int app_worker_accept_notify (app_worker_t *app_wrk, session_t *s)
 
int app_worker_init_connected (app_worker_t *app_wrk, session_t *s)
 
int app_worker_connect_notify (app_worker_t *app_wrk, session_t *s, u32 opaque)
 
int app_worker_close_notify (app_worker_t *app_wrk, session_t *s)
 
int app_worker_reset_notify (app_worker_t *app_wrk, session_t *s)
 
int app_worker_builtin_rx (app_worker_t *app_wrk, session_t *s)
 
int app_worker_own_session (app_worker_t *app_wrk, session_t *s)
 
int app_worker_connect_session (app_worker_t *app, session_endpoint_t *sep, u32 api_context)
 
int app_worker_alloc_connects_segment_manager (app_worker_t *app_wrk)
 
segment_manager_tapp_worker_get_connect_segment_manager (app_worker_t *app)
 
segment_manager_tapp_worker_get_or_alloc_connect_segment_manager (app_worker_t *app_wrk)
 
segment_manager_tapp_worker_get_listen_segment_manager (app_worker_t *app, session_t *listener)
 
session_tapp_worker_first_listener (app_worker_t *app_wrk, u8 fib_proto, u8 transport_proto)
 
session_tapp_worker_proxy_listener (app_worker_t *app_wrk, u8 fib_proto, u8 transport_proto)
 
int app_worker_add_segment_notify (app_worker_t *app_wrk, u64 segment_handle)
 Send an API message to the external app, to map new segment. More...
 
int app_worker_del_segment_notify (app_worker_t *app_wrk, u64 segment_handle)
 
static u8 app_worker_application_is_builtin (app_worker_t *app_wrk)
 
static int app_enqueue_evt (svm_msg_q_t *mq, svm_msg_q_msg_t *msg, u8 lock)
 
static int app_send_io_evt_rx (app_worker_t *app_wrk, session_t *s, u8 lock)
 
static int app_send_io_evt_tx (app_worker_t *app_wrk, session_t *s, u8 lock)
 
int app_worker_send_event (app_worker_t *app, session_t *s, u8 evt_type)
 Send event to application. More...
 
int app_worker_lock_and_send_event (app_worker_t *app, session_t *s, u8 evt_type)
 Send event to application. More...
 
u8format_app_worker_listener (u8 *s, va_list *args)
 
u8format_app_worker (u8 *s, va_list *args)
 
void app_worker_format_connects (app_worker_t *app_wrk, int verbose)
 

Variables

static app_worker_tapp_workers
 Pool of workers associated to apps. More...
 
static app_send_evt_handler_fn *const app_send_evt_handler_fns [2]
 

Typedef Documentation

typedef int( app_send_evt_handler_fn) (app_worker_t *app, session_t *s, u8 lock)

Definition at line 623 of file application_worker.c.

Function Documentation

static int app_enqueue_evt ( svm_msg_q_t mq,
svm_msg_q_msg_t msg,
u8  lock 
)
inlinestatic

Definition at line 521 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int app_send_io_evt_rx ( app_worker_t app_wrk,
session_t s,
u8  lock 
)
inlinestatic

Definition at line 548 of file application_worker.c.

+ Here is the call graph for this function:

static int app_send_io_evt_tx ( app_worker_t app_wrk,
session_t s,
u8  lock 
)
inlinestatic

Definition at line 591 of file application_worker.c.

+ Here is the call graph for this function:

int app_worker_accept_notify ( app_worker_t app_wrk,
session_t s 
)

Definition at line 294 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_add_segment_notify ( app_worker_t app_wrk,
u64  segment_handle 
)

Send an API message to the external app, to map new segment.

Definition at line 499 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

app_worker_t* app_worker_alloc ( application_t app)

Definition at line 26 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_alloc_connects_segment_manager ( app_worker_t app_wrk)

Definition at line 409 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static segment_manager_t* app_worker_alloc_segment_manager ( app_worker_t app_wrk)
static

Definition at line 130 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static int app_worker_alloc_session_fifos ( segment_manager_t sm,
session_t s 
)
static

Definition at line 150 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static u8 app_worker_application_is_builtin ( app_worker_t app_wrk)
inlinestatic

Definition at line 515 of file application_worker.c.

+ Here is the caller graph for this function:

int app_worker_builtin_rx ( app_worker_t app_wrk,
session_t s 
)

Definition at line 341 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_close_notify ( app_worker_t app_wrk,
session_t s 
)

Definition at line 325 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_connect_notify ( app_worker_t app_wrk,
session_t s,
u32  opaque 
)

Definition at line 317 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_connect_session ( app_worker_t app,
session_endpoint_t sep,
u32  api_context 
)

Definition at line 394 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_del_segment_notify ( app_worker_t app_wrk,
u64  segment_handle 
)

Definition at line 507 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

session_t* app_worker_first_listener ( app_worker_t app_wrk,
u8  fib_proto,
u8  transport_proto 
)

Definition at line 449 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void app_worker_format_connects ( app_worker_t app_wrk,
int  verbose 
)

Definition at line 711 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void app_worker_free ( app_worker_t app_wrk)

Definition at line 55 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

app_worker_t* app_worker_get ( u32  wrk_index)

Definition at line 41 of file application_worker.c.

+ Here is the caller graph for this function:

application_t* app_worker_get_app ( u32  wrk_index)

Definition at line 120 of file application_worker.c.

+ Here is the call graph for this function:

segment_manager_t* app_worker_get_connect_segment_manager ( app_worker_t app)

Definition at line 424 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

app_worker_t* app_worker_get_if_valid ( u32  wrk_index)

Definition at line 47 of file application_worker.c.

+ Here is the caller graph for this function:

segment_manager_t* app_worker_get_listen_segment_manager ( app_worker_t app,
session_t listener 
)

Definition at line 439 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

segment_manager_t* app_worker_get_or_alloc_connect_segment_manager ( app_worker_t app_wrk)

Definition at line 431 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_init_accepted ( session_t s)

Definition at line 276 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_init_connected ( app_worker_t app_wrk,
session_t s 
)

Definition at line 301 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_init_listener ( app_worker_t app_wrk,
session_t ls 
)

Definition at line 172 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_lock_and_send_event ( app_worker_t app,
session_t s,
u8  evt_type 
)

Send event to application.

Logic from queue perspective is blocking. However, if queue is full, we return.

Definition at line 652 of file application_worker.c.

+ Here is the caller graph for this function:

int app_worker_own_session ( app_worker_t app_wrk,
session_t s 
)

Definition at line 349 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

session_t* app_worker_proxy_listener ( app_worker_t app_wrk,
u8  fib_proto,
u8  transport_proto 
)

Definition at line 473 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_reset_notify ( app_worker_t app_wrk,
session_t s 
)

Definition at line 333 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_send_event ( app_worker_t app,
session_t s,
u8  evt_type 
)

Send event to application.

Logic from queue perspective is non-blocking. If there's not enough space to enqueue a message, we return.

Definition at line 639 of file application_worker.c.

int app_worker_start_listen ( app_worker_t app_wrk,
app_listener_t app_listener 
)

Definition at line 194 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int app_worker_stop_listen ( app_worker_t app_wrk,
app_listener_t al 
)

Definition at line 249 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void app_worker_stop_listen_session ( app_worker_t app_wrk,
session_t ls 
)
static

Definition at line 223 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

u8* format_app_worker ( u8 s,
va_list *  args 
)

Definition at line 698 of file application_worker.c.

+ Here is the call graph for this function:

u8* format_app_worker_listener ( u8 s,
va_list *  args 
)

Definition at line 659 of file application_worker.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

app_send_evt_handler_fn* const app_send_evt_handler_fns[2]
static
Initial value:
= {
}
static int app_send_io_evt_rx(app_worker_t *app_wrk, session_t *s, u8 lock)
static int app_send_io_evt_tx(app_worker_t *app_wrk, session_t *s, u8 lock)

Definition at line 626 of file application_worker.c.

app_worker_t* app_workers
static

Pool of workers associated to apps.

Definition at line 23 of file application_worker.c.