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/tcp/builtin_http_server.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) (limited to 'src/vnet/tcp') diff --git a/src/vnet/tcp/builtin_http_server.c b/src/vnet/tcp/builtin_http_server.c index 4e61fbd1aa8..763a46e9590 100644 --- a/src/vnet/tcp/builtin_http_server.c +++ b/src/vnet/tcp/builtin_http_server.c @@ -385,6 +385,13 @@ builtin_redirect_connect_callback (u32 client_index, void *mp) return -1; } +static void +alloc_http_process_callback (void *s_arg) +{ + stream_session_t *s = (stream_session_t *) s_arg; + alloc_http_process (s); +} + static int http_server_rx_callback (stream_session_t * s) { @@ -414,7 +421,19 @@ http_server_rx_callback (stream_session_t * s) /* send the command to a new/recycled vlib process */ s->opaque[1] = (u64) vec_dup (hsm->rx_buf); - alloc_http_process (s); + /* Send an RPC request via the thread-0 input node */ + if (vlib_get_thread_index () != 0) + { + session_fifo_event_t evt; + evt.rpc_args.fp = alloc_http_process_callback; + evt.rpc_args.arg = s; + evt.event_type = FIFO_EVENT_RPC; + unix_shared_memory_queue_add + (session_manager_get_vpp_event_queue (0 /* main thread */ ), + (u8 *) & evt, 0 /* do wait for mutex */ ); + } + else + alloc_http_process (s); return 0; } -- cgit 1.2.3-korg