diff options
Diffstat (limited to 'src/vcl/vcl_private.h')
-rw-r--r-- | src/vcl/vcl_private.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/vcl/vcl_private.h b/src/vcl/vcl_private.h index 7e72b29ba25..c98e1cde9b1 100644 --- a/src/vcl/vcl_private.h +++ b/src/vcl/vcl_private.h @@ -143,8 +143,16 @@ typedef enum vcl_session_flags_ VCL_SESSION_F_PENDING_DISCONNECT = 1 << 6, VCL_SESSION_F_PENDING_FREE = 1 << 7, VCL_SESSION_F_PENDING_LISTEN = 1 << 8, + VCL_SESSION_F_APP_CLOSING = 1 << 9, } __clib_packed vcl_session_flags_t; +typedef enum vcl_worker_wait_ +{ + VCL_WRK_WAIT_CTRL, + VCL_WRK_WAIT_IO_RX, + VCL_WRK_WAIT_IO_TX, +} vcl_worker_wait_type_t; + typedef struct vcl_session_ { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); @@ -229,6 +237,7 @@ typedef struct vcl_mq_evt_conn_ int mq_fd; } vcl_mq_evt_conn_t; +typedef void (*vcl_worker_wait_mq_fn) (u32 vcl_sh); typedef struct vcl_worker_ { CLIB_CACHE_LINE_ALIGN_MARK (cacheline0); @@ -312,6 +321,10 @@ typedef struct vcl_worker_ /** vcl needs next epoll_create to go to libc_epoll */ u8 vcl_needs_real_epoll; volatile int rpc_done; + + /* functions to be called pre/post wait if vcl managed by vls */ + vcl_worker_wait_mq_fn pre_wait_fn; + vcl_worker_wait_mq_fn post_wait_fn; } vcl_worker_t; STATIC_ASSERT (sizeof (session_disconnected_msg_t) <= 16, @@ -724,6 +737,7 @@ u32 vcl_segment_table_lookup (u64 segment_handle); void vcl_segment_table_del (u64 segment_handle); int vcl_session_read_ready (vcl_session_t * session); +int vcl_session_read_ready2 (vcl_session_t *s); int vcl_session_write_ready (vcl_session_t * session); int vcl_session_alloc_ext_cfg (vcl_session_t *s, transport_endpt_ext_cfg_type_t type, u32 len); @@ -783,6 +797,8 @@ svm_fifo_chunk_t *vcl_segment_alloc_chunk (uword segment_handle, int vcl_session_share_fifos (vcl_session_t *s, svm_fifo_t *rxf, svm_fifo_t *txf); void vcl_worker_detach_sessions (vcl_worker_t *wrk); +void vcl_worker_set_wait_mq_fns (vcl_worker_wait_mq_fn pre_wait, + vcl_worker_wait_mq_fn post_wait); /* * VCL Binary API |