memset (f, 0, sizeof (*f));
f->nitems = data_size_in_bytes;
f->ooos_list_head = OOO_SEGMENT_INVALID_INDEX;
+ f->ct_session_index = SVM_FIFO_INVALID_SESSION_INDEX;
f->refcnt = 1;
return (f);
}
format_function_t format_ooo_segment;
format_function_t format_ooo_list;
-#define SVM_FIFO_TRACE (0)
-#define OOO_SEGMENT_INVALID_INDEX ((u32)~0)
+#define SVM_FIFO_TRACE (0)
+#define OOO_SEGMENT_INVALID_INDEX ((u32)~0)
+#define SVM_FIFO_INVALID_SESSION_INDEX ((u32)~0)
typedef struct
{
u8 master_thread_index;
u8 client_thread_index;
u32 segment_manager;
+ u32 ct_session_index; /**< Local session index for vpp */
CLIB_CACHE_LINE_ALIGN_MARK (end_shared);
u32 head;
volatile u32 want_tx_evt; /**< producer wants nudge */
memset (f, 0, sizeof (*f));
f->nitems = data_size_in_bytes;
f->ooos_list_head = OOO_SEGMENT_INVALID_INDEX;
+ f->ct_session_index = SVM_FIFO_INVALID_SESSION_INDEX;
f->refcnt = 1;
f->freelist_index = freelist_index;
goto found;
segment_manager_segment_reader_unlock (sm);
goto failed;
}
- ls->server_rx_fifo->master_session_index = ls->session_index;
- ls->server_tx_fifo->master_session_index = ls->session_index;
- ls->server_rx_fifo->master_thread_index = ~0;
- ls->server_tx_fifo->master_thread_index = ~0;
+ ls->server_rx_fifo->ct_session_index = ls->session_index;
+ ls->server_tx_fifo->ct_session_index = ls->session_index;
ls->svm_segment_index = seg_index;
ls->listener_index = ll->session_index;
ls->client_wrk_index = client_wrk->wrk_index;
*/
while (fifo)
{
- if (fifo->master_thread_index == 255)
+ if (fifo->ct_session_index != SVM_FIFO_INVALID_SESSION_INDEX)
{
svm_fifo_t *next = fifo->next;
application_local_session_disconnect_w_index (sm->app_wrk_index,
- fifo->master_session_index);
+ fifo->ct_session_index);
fifo = next;
continue;
}
s = session_event_get_session (e, thread_index);
if (PREDICT_FALSE (!s))
{
- clib_warning ("It's dead, Jim!");
+ clib_warning ("session was freed!");
continue;
}