X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvcl%2Fvcl_private.c;fp=src%2Fvcl%2Fvcl_private.c;h=95a45ffd0990be91d04261c29d05639250c7cf9d;hb=8eb8d50ecfd7507aae340cb05a0fb07a790e4303;hp=712c07049c6d2ce6d9a4b42c149b5f6a9ece6740;hpb=cba215dad3101c6b03483c5c40f806903de8460d;p=vpp.git diff --git a/src/vcl/vcl_private.c b/src/vcl/vcl_private.c index 712c07049c6..95a45ffd099 100644 --- a/src/vcl/vcl_private.c +++ b/src/vcl/vcl_private.c @@ -569,6 +569,26 @@ vcl_segment_alloc_chunk (uword segment_handle, u32 slice_index, u32 size, return c; } +int +vcl_session_share_fifos (vcl_session_t *s, svm_fifo_t *rxf, svm_fifo_t *txf) +{ + vcl_worker_t *wrk = vcl_worker_get_current (); + fifo_segment_t *fs; + + clib_rwlock_reader_lock (&vcm->segment_table_lock); + + fs = fifo_segment_get_segment (&vcm->segment_main, rxf->segment_index); + s->rx_fifo = fifo_segment_duplicate_fifo (fs, rxf); + s->tx_fifo = fifo_segment_duplicate_fifo (fs, txf); + + clib_rwlock_reader_unlock (&vcm->segment_table_lock); + + svm_fifo_add_subscriber (s->rx_fifo, wrk->vpp_wrk_index); + svm_fifo_add_subscriber (s->tx_fifo, wrk->vpp_wrk_index); + + return 0; +} + /* * fd.io coding-style-patch-verification: ON *