diff options
author | hanlin <hanlin_wang@163.com> | 2020-07-13 11:09:15 +0800 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2020-08-12 01:57:18 +0000 |
commit | a3a489691d7f2813702fae2d915120743b860d62 (patch) | |
tree | 23a22a25ebe051be37244c45fc3a0732cc296e0d /src/vcl/vcl_private.h | |
parent | 40c07ce7a78af69f7354222d4663a65cd5572049 (diff) |
vcl: support multi-threads with session migration
Currently, mutlti-threads only support one dispatch thread and multiple
worker threads, eventually only dispatch thread is a vcl worker and can
interact with epoll.
This patch will register all threads as vcl worker, and then each
thread can interact with epoll now. Moreover, session migration also
supported, such as socket created in thread A and used (bind, connect
and etc.) in thread B.
Type: feature
Signed-off-by: hanlin <hanlin_wang@163.com>
Change-Id: Iab0b43a33466968c1423d7d20faf1460c8589d91
Diffstat (limited to 'src/vcl/vcl_private.h')
-rw-r--r-- | src/vcl/vcl_private.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/vcl/vcl_private.h b/src/vcl/vcl_private.h index 4a25632379c..b873ad994a6 100644 --- a/src/vcl/vcl_private.h +++ b/src/vcl/vcl_private.h @@ -218,6 +218,7 @@ typedef struct vppcom_cfg_t_ u8 *vpp_api_socket_name; u8 *vpp_api_chroot; u32 tls_engine; + u8 mt_supported; } vppcom_cfg_t; void vppcom_cfg (vppcom_cfg_t * vcl_cfg); @@ -307,6 +308,10 @@ typedef struct vcl_worker_ socket_client_main_t bapi_sock_ctx; memory_client_main_t bapi_shm_ctx; api_main_t bapi_api_ctx; + + /** vcl needs next epoll_create to go to libc_epoll */ + u8 vcl_needs_real_epoll; + volatile int rpc_done; } vcl_worker_t; typedef void (vcl_rpc_fn_t) (void *args); @@ -659,7 +664,7 @@ vcl_session_vpp_evt_q (vcl_worker_t * wrk, vcl_session_t * s) void vcl_send_session_worker_update (vcl_worker_t * wrk, vcl_session_t * s, u32 wrk_index); -void vcl_send_worker_rpc (u32 dst_wrk_index, void *data, u32 data_len); +int vcl_send_worker_rpc (u32 dst_wrk_index, void *data, u32 data_len); /* * VCL Binary API |