session: segment manager refactor
- use valloc as a 'central' segment baseva manager
- use per segment manager segment pools and use rwlocks to guard them
- add session test that exercises segment creation
- embed segment manager properties into application since they're shared
- fix rw locks
Change-Id: I761164c147275d9e8a926f1eda395e090d231f9a
Signed-off-by: Florin Coras <fcoras@cisco.com>
diff --git a/src/vnet/session-apps/echo_client.c b/src/vnet/session-apps/echo_client.c
index c38b533..27e253a 100644
--- a/src/vnet/session-apps/echo_client.c
+++ b/src/vnet/session-apps/echo_client.c
@@ -413,13 +413,21 @@
return 0;
}
+int
+echo_client_add_segment_callback (u32 client_index, const ssvm_private_t * sp)
+{
+ /* New heaps may be added */
+ return 0;
+}
+
/* *INDENT-OFF* */
static session_cb_vft_t echo_clients = {
.session_reset_callback = echo_clients_session_reset_callback,
.session_connected_callback = echo_clients_session_connected_callback,
.session_accept_callback = echo_clients_session_create_callback,
.session_disconnect_callback = echo_clients_session_disconnect_callback,
- .builtin_server_rx_callback = echo_clients_rx_callback
+ .builtin_server_rx_callback = echo_clients_rx_callback,
+ .add_segment_callback = echo_client_add_segment_callback
};
/* *INDENT-ON* */
@@ -445,6 +453,7 @@
options[APP_OPTIONS_ACCEPT_COOKIE] = 0x12345678;
options[APP_OPTIONS_SEGMENT_SIZE] = segment_size;
+ options[APP_OPTIONS_ADD_SEGMENT_SIZE] = segment_size;
options[APP_OPTIONS_RX_FIFO_SIZE] = ecm->fifo_size;
options[APP_OPTIONS_TX_FIFO_SIZE] = ecm->fifo_size;
options[APP_OPTIONS_PRIVATE_SEGMENT_COUNT] = ecm->private_segment_count;
@@ -625,7 +634,7 @@
else if (unformat (input, "test-bytes"))
ecm->test_bytes = 1;
else
- return clib_error_return (0, "unknown input `%U'",
+ return clib_error_return (0, "failed: unknown input `%U'",
format_unformat_error, input);
}