aboutsummaryrefslogtreecommitdiffstats
path: root/vnet/vnet/devices/dpdk/threads.c
diff options
context:
space:
mode:
Diffstat (limited to 'vnet/vnet/devices/dpdk/threads.c')
-rw-r--r--vnet/vnet/devices/dpdk/threads.c84
1 files changed, 3 insertions, 81 deletions
diff --git a/vnet/vnet/devices/dpdk/threads.c b/vnet/vnet/devices/dpdk/threads.c
index aa32f100..b1f13ef3 100644
--- a/vnet/vnet/devices/dpdk/threads.c
+++ b/vnet/vnet/devices/dpdk/threads.c
@@ -291,88 +291,10 @@ VLIB_REGISTER_THREAD (io_thread_reg, static) = {
};
#endif
-static void vl_api_rpc_call_t_handler (vl_api_rpc_call_t * mp)
-{
- vl_api_rpc_reply_t * rmp;
- int (*fp)(void *);
- i32 rv = 0;
- vlib_main_t * vm = vlib_get_main();
-
- if (mp->function == 0)
- {
- rv = -1;
- clib_warning ("rpc NULL function pointer");
- }
-
- else
- {
- if (mp->need_barrier_sync)
- vlib_worker_thread_barrier_sync (vm);
-
- fp = (void *)(mp->function);
- rv = (*fp)(mp->data);
-
- if (mp->need_barrier_sync)
- vlib_worker_thread_barrier_release (vm);
- }
-
- if (mp->send_reply)
- {
- unix_shared_memory_queue_t * q =
- vl_api_client_index_to_input_queue (mp->client_index);
- if (q)
- {
- rmp = vl_msg_api_alloc_as_if_client (sizeof (*rmp));
- rmp->_vl_msg_id = ntohs (VL_API_RPC_REPLY);
- rmp->context = mp->context;
- rmp->retval = rv;
- vl_msg_api_send_shmem (q, (u8 *)&rmp);
- }
- }
- if (mp->multicast)
- {
- clib_warning ("multicast not yet implemented...");
- }
-}
-
-static void vl_api_rpc_reply_t_handler (vl_api_rpc_reply_t * mp)
-{ clib_warning ("unimplemented"); }
-
-void vl_api_rpc_call_main_thread (void *fp, u8 * data, u32 data_length)
-{
- vl_api_rpc_call_t * mp;
- api_main_t *am = &api_main;
- vl_shmem_hdr_t *shmem_hdr = am->shmem_hdr;
-
- mp = vl_msg_api_alloc_as_if_client (sizeof (*mp) + data_length);
- memset (mp, 0, sizeof (*mp));
- memcpy (mp->data, data, data_length);
- mp->_vl_msg_id = ntohs (VL_API_RPC_CALL);
- mp->function = (u64)fp;
- mp->need_barrier_sync = 1;
-
- /* Use the "normal" control-plane mechanism for the main thread */
- vl_msg_api_send_shmem (shmem_hdr->vl_input_queue, (u8 *)&mp);
-}
-
-
-#define foreach_rpc_api_msg \
-_(RPC_CALL,rpc_call) \
-_(RPC_REPLY,rpc_reply)
-
static clib_error_t *
-rpc_api_hookup (vlib_main_t *vm)
+dpdk_thread_init (vlib_main_t *vm)
{
-#define _(N,n) \
- vl_msg_api_set_handlers(VL_API_##N, #n, \
- vl_api_##n##_t_handler, \
- vl_noop_handler, \
- vl_noop_handler, \
- vl_api_##n##_t_print, \
- sizeof(vl_api_##n##_t), 0 /* do not trace */);
- foreach_rpc_api_msg;
-#undef _
- return 0;
+ return (0);
}
-VLIB_API_INIT_FUNCTION(rpc_api_hookup);
+VLIB_INIT_FUNCTION(dpdk_thread_init);