aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/session
diff options
context:
space:
mode:
authorDave Barach <dbarach@cisco.com>2017-05-10 13:34:04 -0400
committerDamjan Marion <dmarion.lists@gmail.com>2017-05-10 20:41:04 +0000
commite5f1d27695e2e6b9be17198e9b49e95639a15c58 (patch)
tree945a17e443245aad52590bec371748829ce66eda /src/vnet/session
parent3335693cc1afe6742e9a5e726a682dd28b0ce4d4 (diff)
Multi-thread enablement for the debug cli http server
Change-Id: Iec1f739fe24c722d0db6c10cc81b5e8333067ea1 Signed-off-by: Dave Barach <dbarach@cisco.com>
Diffstat (limited to 'src/vnet/session')
-rw-r--r--src/vnet/session/node.c6
-rw-r--r--src/vnet/session/session.h10
2 files changed, 15 insertions, 1 deletions
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;
ht .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*
 * Copyright (c) 2017 Red Hat and/or its affiliates.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at:
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

/* Doxygen directory documentation */

/**
@dir
@brief Interface.

This is a high level directory which contains sub-directories for all the
networking protocols. Also contained within this directory are more generic
CLI command files such as interface management.

*/
/*? %%clicmd:group_label Interface %% ?*/
/*? %%syscfg:group_label Interface %% ?*/