summaryrefslogtreecommitdiffstats
path: root/src/svm/svm_fifo.h
diff options
context:
space:
mode:
authorDave Barach <dbarach@cisco.com>2017-08-02 13:56:13 -0400
committerFlorin Coras <florin.coras@gmail.com>2017-08-10 14:34:31 +0000
commit818eb54de01459ed3d823f8a9781bbed0845db82 (patch)
treeb3ec3cbfb20ae371a648e9c8f5a7aaaa027b457f /src/svm/svm_fifo.h
parentef5dd4f2aec6df1b58aa8d07493acf486eccf802 (diff)
Improve the svm fifo allocator
- Round up requested fifo size to the next power of two - Maintain per-segment power-of-two freelists - Allocate fifos in chunks, to amortize alignment overhead - Detach builtin test client application after each run so we can use different fifo sizes each time - Be more suspicious of session / application indices Useful prep work for dynamically resizing fifos. As far as the svm fifo code is concerned, it's OK to set fifo->nitems anywhere in the interval: [0, 1<<(fifo->freelist_index) + FIFO_SEGMENT_MIN_FIFO_SIZE] It's unlikely that setting nitems below the path MTU will work out very well... Change-Id: Idad73a027dfb7412056cb02988b77e300fa7e8a7 Signed-off-by: Dave Barach <dave@barachs.net>
Diffstat (limited to 'src/svm/svm_fifo.h')
-rw-r--r--src/svm/svm_fifo.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/svm/svm_fifo.h b/src/svm/svm_fifo.h
index f10b4d91a2a..84901d022d6 100644
--- a/src/svm/svm_fifo.h
+++ b/src/svm/svm_fifo.h
@@ -75,7 +75,8 @@ typedef struct _svm_fifo
#if SVM_FIFO_TRACE
svm_fifo_trace_elem_t *trace;
#endif
- i8 refcnt;
+ u32 freelist_index; /**< aka log2(allocated_size) - const. */
+ i8 refcnt; /**< reference count */
CLIB_CACHE_LINE_ALIGN_MARK (data);
} svm_fifo_t;