From e5f1d27695e2e6b9be17198e9b49e95639a15c58 Mon Sep 17 00:00:00 2001 From: Dave Barach Date: Wed, 10 May 2017 13:34:04 -0400 Subject: Multi-thread enablement for the debug cli http server Change-Id: Iec1f739fe24c722d0db6c10cc81b5e8333067ea1 Signed-off-by: Dave Barach --- src/vnet/session/node.c | 6 ++++++ src/vnet/session/session.h | 10 +++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) (limited to 'src/vnet/session') diff --git a/src/vnet/session/node.c b/src/vnet/session/node.c index ce7c38683f5..fffc8eb385a 100644 --- a/src/vnet/session/node.c +++ b/src/vnet/session/node.c @@ -401,6 +401,7 @@ session_queue_node_fn (vlib_main_t * vm, vlib_node_runtime_t * node, u32 my_thread_index = vm->thread_index; int i, rv; f64 now = vlib_time_now (vm); + void (*fp) (void *); SESSION_EVT_DBG (SESSION_EVT_POLL_GAP_TRACK, smm, my_thread_index); @@ -496,6 +497,11 @@ skip_dequeue: app = application_get (s0->app_index); app->cb_fns.builtin_server_rx_callback (s0); break; + case FIFO_EVENT_RPC: + fp = e0->rpc_args.fp; + (*fp) (e0->rpc_args.arg); + break; + default: clib_warning ("unhandled event type %d", e0->event_type); } diff --git a/src/vnet/session/session.h b/src/vnet/session/session.h index 5c281df7854..efb9e30b5cc 100644 --- a/src/vnet/session/session.h +++ b/src/vnet/session/session.h @@ -32,7 +32,8 @@ typedef enum FIFO_EVENT_APP_TX, FIFO_EVENT_TIMEOUT, FIFO_EVENT_DISCONNECT, - FIFO_EVENT_BUILTIN_RX + FIFO_EVENT_BUILTIN_RX, + FIFO_EVENT_RPC, } fifo_event_type_t; #define foreach_session_input_error \ @@ -91,12 +92,19 @@ typedef enum SESSION_STATE_N_STATES, } stream_session_state_t; +typedef struct +{ + void *fp; + void *arg; +} rpc_args_t; + /* *INDENT-OFF* */ typedef CLIB_PACKED (struct { union { svm_fifo_t * fifo; u64 session_handle; + rpc_args_t rpc_args; }; u8 event_type; u16 event_id; -- cgit 1.2.3-korg