From b85de19145a01d3acdf326c3cfa4e94b585bb59f Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Tue, 18 Jan 2022 20:51:08 -0800 Subject: svm: update number of segments in svm_fifo_segments In addition to returning the number of bytes also update the number of segments to reflect the number used. Type: improvement Signed-off-by: Florin Coras Change-Id: Ia87dc2aa62cea38b18dfa83df94dc2abe29d5121 --- src/svm/svm_fifo.c | 7 ++++--- src/svm/svm_fifo.h | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'src/svm') diff --git a/src/svm/svm_fifo.c b/src/svm/svm_fifo.c index 7197e386dbd..83cad42ee9b 100644 --- a/src/svm/svm_fifo.c +++ b/src/svm/svm_fifo.c @@ -1281,8 +1281,8 @@ svm_fifo_provision_chunks (svm_fifo_t *f, svm_fifo_seg_t *fs, u32 n_segs, } int -svm_fifo_segments (svm_fifo_t * f, u32 offset, svm_fifo_seg_t * fs, - u32 n_segs, u32 max_bytes) +svm_fifo_segments (svm_fifo_t *f, u32 offset, svm_fifo_seg_t *fs, u32 *n_segs, + u32 max_bytes) { u32 cursize, to_read, head, tail, fs_index = 1; u32 n_bytes, head_pos, len, start; @@ -1315,7 +1315,7 @@ svm_fifo_segments (svm_fifo_t * f, u32 offset, svm_fifo_seg_t * fs, fs[0].len = clib_min (c->length - head_pos, to_read); n_bytes = fs[0].len; - while (n_bytes < to_read && fs_index < n_segs) + while (n_bytes < to_read && fs_index < *n_segs) { c = f_cptr (f, c->next); len = clib_min (c->length, to_read - n_bytes); @@ -1324,6 +1324,7 @@ svm_fifo_segments (svm_fifo_t * f, u32 offset, svm_fifo_seg_t * fs, n_bytes += len; fs_index += 1; } + *n_segs = fs_index; return n_bytes; } diff --git a/src/svm/svm_fifo.h b/src/svm/svm_fifo.h index 9b55f720e5b..c4cc0382ab7 100644 --- a/src/svm/svm_fifo.h +++ b/src/svm/svm_fifo.h @@ -431,8 +431,8 @@ void svm_fifo_dequeue_drop_all (svm_fifo_t * f); * @param max_bytes max bytes to be mapped to fifo segments * @return number of bytes in fifo segments or SVM_FIFO_EEMPTY */ -int svm_fifo_segments (svm_fifo_t * f, u32 offset, svm_fifo_seg_t * fs, - u32 n_segs, u32 max_bytes); +int svm_fifo_segments (svm_fifo_t *f, u32 offset, svm_fifo_seg_t *fs, + u32 *n_segs, u32 max_bytes); /** * Add io events subscriber to list * -- cgit 1.2.3-korg