diff options
author | Florin Coras <fcoras@cisco.com> | 2019-12-11 14:27:53 -0800 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2019-12-12 17:38:30 +0000 |
commit | ef4f3e7fea359f651c548182a7597abc066ca372 (patch) | |
tree | bf66226604821074452caaac343868784d261d55 /src/svm | |
parent | 38277e407148dca4ca79784a2e8c29d486425829 (diff) |
session svm: support for segments larger than 4GB
Type: feature
Change-Id: I7d3017bbb369261d74f51807a226f2c12f45291c
Signed-off-by: Florin Coras <fcoras@cisco.com>
Diffstat (limited to 'src/svm')
-rw-r--r-- | src/svm/fifo_segment.c | 14 | ||||
-rw-r--r-- | src/svm/fifo_segment.h | 6 | ||||
-rw-r--r-- | src/svm/ssvm.c | 3 | ||||
-rw-r--r-- | src/svm/ssvm.h | 2 |
4 files changed, 12 insertions, 13 deletions
diff --git a/src/svm/fifo_segment.c b/src/svm/fifo_segment.c index 95b88836ddb..01fa65623c5 100644 --- a/src/svm/fifo_segment.c +++ b/src/svm/fifo_segment.c @@ -25,7 +25,7 @@ * @param fs fifo segment * @return number of free bytes */ -static u32 +static uword fs_free_space (fifo_segment_t * fs) { struct dlmallinfo dlminfo; @@ -870,7 +870,7 @@ fifo_segment_update_free_bytes (fifo_segment_t * fs) clib_atomic_store_rel_n (&fsh->n_free_bytes, fs_free_space (fs)); } -u32 +uword fifo_segment_free_bytes (fifo_segment_t * fs) { return fsh_n_free_bytes (fs->h); @@ -943,11 +943,11 @@ format_fifo_segment_type (u8 * s, va_list * args) u8 * format_fifo_segment (u8 * s, va_list * args) { - u32 count, indent, active_fifos, free_fifos, fifo_hdr = 0, chunk_size; + u32 count, indent, active_fifos, free_fifos, fifo_hdr = 0; fifo_segment_t *fs = va_arg (*args, fifo_segment_t *); int verbose __attribute__ ((unused)) = va_arg (*args, int); - u32 est_chunk_bytes, est_free_seg_bytes, free_chunks; - uword chunk_bytes = 0, free_seg_bytes; + uword est_chunk_bytes, est_free_seg_bytes, free_chunks; + uword chunk_bytes = 0, free_seg_bytes, chunk_size; fifo_segment_header_t *fsh; fifo_segment_slice_t *fss; svm_fifo_chunk_t *c; @@ -1020,11 +1020,11 @@ format_fifo_segment (u8 * s, va_list * args) fifo_segment_update_free_bytes (fs); free_seg_bytes = fifo_segment_free_bytes (fs); - s = format (s, "\n%Useg free bytes: %U (%u) estimated: %U (%u)\n", + s = format (s, "\n%Useg free bytes: %U (%lu) estimated: %U (%lu)\n", format_white_space, indent + 2, format_memory_size, free_seg_bytes, free_seg_bytes, format_memory_size, est_free_seg_bytes, est_free_seg_bytes); - s = format (s, "%Uchunk free bytes: %U (%lu) estimated: %U (%u)\n", + s = format (s, "%Uchunk free bytes: %U (%lu) estimated: %U (%lu)\n", format_white_space, indent + 2, format_memory_size, chunk_bytes, chunk_bytes, format_memory_size, est_chunk_bytes, est_chunk_bytes); diff --git a/src/svm/fifo_segment.h b/src/svm/fifo_segment.h index ff36f45c4f2..d363c6058a7 100644 --- a/src/svm/fifo_segment.h +++ b/src/svm/fifo_segment.h @@ -42,7 +42,7 @@ typedef struct fifo_segment_slice_ svm_fifo_t *fifos; /**< Linked list of active RX fifos */ svm_fifo_t *free_fifos; /**< Freelists by fifo size */ svm_fifo_chunk_t **free_chunks; /**< Freelists by chunk size */ - u32 n_fl_chunk_bytes; /**< Chunk bytes on freelist */ + uword n_fl_chunk_bytes; /**< Chunk bytes on freelist */ } fifo_segment_slice_t; typedef struct @@ -66,7 +66,7 @@ typedef struct typedef struct { fifo_segment_t *segments; /**< pool of fifo segments */ - u64 next_baseva; /**< Where to put the next one */ + uword next_baseva; /**< Where to put the next one */ u32 timeout_in_seconds; /**< Time to wait during attach */ } fifo_segment_main_t; @@ -186,7 +186,7 @@ int fifo_segment_collect_fifo_chunks (fifo_segment_t * fs, svm_fifo_t * f); * @param fs fifo segment * @return free bytes estimate */ -u32 fifo_segment_free_bytes (fifo_segment_t * fs); +uword fifo_segment_free_bytes (fifo_segment_t * fs); /** * Update fifo segment free bytes estimate diff --git a/src/svm/ssvm.c b/src/svm/ssvm.c index a16965e5e67..737d2344402 100644 --- a/src/svm/ssvm.c +++ b/src/svm/ssvm.c @@ -347,9 +347,8 @@ ssvm_delete_memfd (ssvm_private_t * memfd) int ssvm_master_init_private (ssvm_private_t * ssvm) { + uword pagesize = clib_mem_get_page_size (), rnd_size = 0; ssvm_shared_header_t *sh; - u32 pagesize = clib_mem_get_page_size (); - u32 rnd_size = 0; u8 *heap; rnd_size = clib_max (ssvm->ssvm_size + (pagesize - 1), ssvm->ssvm_size); diff --git a/src/svm/ssvm.h b/src/svm/ssvm.h index 60e0cc61ca4..82951d614b0 100644 --- a/src/svm/ssvm.h +++ b/src/svm/ssvm.h @@ -82,7 +82,7 @@ typedef struct typedef struct { ssvm_shared_header_t *sh; - u64 ssvm_size; + uword ssvm_size; u32 my_pid; u8 *name; uword requested_va; |