diff options
Diffstat (limited to 'src/svm/fifo_segment.c')
-rw-r--r-- | src/svm/fifo_segment.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/src/svm/fifo_segment.c b/src/svm/fifo_segment.c index b0f41a92258..815c5a29e8d 100644 --- a/src/svm/fifo_segment.c +++ b/src/svm/fifo_segment.c @@ -63,13 +63,13 @@ fsh_update_free_bytes (fifo_segment_header_t * fsh) } static inline void -fsh_cached_bytes_add (fifo_segment_header_t * fsh, int size) +fsh_cached_bytes_add (fifo_segment_header_t * fsh, uword size) { clib_atomic_fetch_add_rel (&fsh->n_cached_bytes, size); } static inline void -fsh_cached_bytes_sub (fifo_segment_header_t * fsh, int size) +fsh_cached_bytes_sub (fifo_segment_header_t * fsh, uword size) { clib_atomic_fetch_sub_rel (&fsh->n_cached_bytes, size); } @@ -515,14 +515,15 @@ fsh_try_alloc_chunk_batch (fifo_segment_header_t * fsh, fifo_segment_slice_t * fss, u32 fl_index, u32 batch_size) { - u32 rounded_data_size; svm_fifo_chunk_t *c, *head = 0, *tail; + uword size, total_chunk_bytes; + u32 rounded_data_size; void *oldheap; - uword size; u8 *cmem; int i; rounded_data_size = fs_freelist_index_to_size (fl_index); + total_chunk_bytes = (uword) batch_size *rounded_data_size; size = (uword) (sizeof (*c) + rounded_data_size) * batch_size; oldheap = ssvm_push_heap (fsh->ssvm_sh); @@ -549,8 +550,8 @@ fsh_try_alloc_chunk_batch (fifo_segment_header_t * fsh, fss_chunk_free_list_push_list (fss, fl_index, head, tail); fss->num_chunks[fl_index] += batch_size; - fss_fl_chunk_bytes_add (fss, batch_size * rounded_data_size); - fsh_cached_bytes_add (fsh, batch_size * rounded_data_size); + fss_fl_chunk_bytes_add (fss, total_chunk_bytes); + fsh_cached_bytes_add (fsh, total_chunk_bytes); fsh_free_bytes_sub (fsh, size); return 0; |