aboutsummaryrefslogtreecommitdiffstats
path: root/src/vcl/vcl_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/vcl/vcl_private.h')
-rw-r--r--src/vcl/vcl_private.h16
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