aboutsummaryrefslogtreecommitdiffstats
path: root/src/svm/svm_fifo.c
diff options
context:
space:
mode:
authorDave Barach <dave@barachs.net>2017-08-07 09:35:25 -0400
committerDave Wallace <dwallacelf@gmail.com>2017-08-10 00:13:08 +0000
commit52851e6aa9304054fd1059c8dd284abf8e532bf2 (patch)
treeefe4334245044e342817b28d69ee208fba9952ec /src/svm/svm_fifo.c
parentb639b593372612fd3a55b3137b4fdd62df775d96 (diff)
TCP proxy prototype
- Clean up internal API client registration - Add proxy server - Add a reference count to the svm fifo Change-Id: I5ace1c85497062ed412d26ae76a9e6741af1e984 Signed-off-by: Dave Barach <dave@barachs.net> Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/svm/svm_fifo.c')
-rw-r--r--src/svm/svm_fifo.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/svm/svm_fifo.c b/src/svm/svm_fifo.c
index fc2189c5176..e478c06e891 100644
--- a/src/svm/svm_fifo.c
+++ b/src/svm/svm_fifo.c
@@ -201,14 +201,20 @@ svm_fifo_create (u32 data_size_in_bytes)
memset (f, 0, sizeof (*f));
f->nitems = data_size_in_bytes;
f->ooos_list_head = OOO_SEGMENT_INVALID_INDEX;
+ f->refcnt = 1;
return (f);
}
void
svm_fifo_free (svm_fifo_t * f)
{
- pool_free (f->ooo_segments);
- clib_mem_free (f);
+ ASSERT (f->refcnt > 0);
+
+ if (--f->refcnt == 0)
+ {
+ pool_free (f->ooo_segments);
+ clib_mem_free (f);
+ }
}
always_inline ooo_segment_t *