diff options
author | Dave Barach <dave@barachs.net> | 2020-02-10 10:16:40 -0500 |
---|---|---|
committer | Neale Ranns <nranns@cisco.com> | 2020-02-13 07:46:36 +0000 |
commit | 98bd75778736d4322db5ee7ecf5c548133e05d0f (patch) | |
tree | 12d17f6b56639041e6bae8248cca47ef0f710d58 | |
parent | 104112f2d412a4576b5e0d3bbb20665d2b5bd615 (diff) |
vppinfra: add cmake option to grow vectors by 1
For debugging. Do not set this option in production.
Type: feature
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I5e59671c4932e064bc087b85bf9c62c6f3bf48cf
-rw-r--r-- | src/vppinfra/CMakeLists.txt | 7 | ||||
-rw-r--r-- | src/vppinfra/config.h.in | 2 | ||||
-rw-r--r-- | src/vppinfra/vec.c | 4 |
3 files changed, 13 insertions, 0 deletions
diff --git a/src/vppinfra/CMakeLists.txt b/src/vppinfra/CMakeLists.txt index 3998ae6f6a6..7723e6bad5d 100644 --- a/src/vppinfra/CMakeLists.txt +++ b/src/vppinfra/CMakeLists.txt @@ -18,6 +18,13 @@ enable_language(ASM) ############################################################################## set(LOG2_CACHE_LINE_BYTES ${VPP_LOG2_CACHE_LINE_SIZE}) +option(VPP_VECTOR_GROW_BY_ONE "Vectors grow by one, instead of 3/2" OFF) +if(VPP_VECTOR_GROW_BY_ONE) + set(VECTOR_GROW_BY_ONE 1) +else(VPP_VECTOR_GROW_BY_ONE) + set(VECTOR_GROW_BY_ONE 0) +endif(VPP_VECTOR_GROW_BY_ONE) + configure_file( ${CMAKE_SOURCE_DIR}/vppinfra/config.h.in ${CMAKE_BINARY_DIR}/vppinfra/config.h diff --git a/src/vppinfra/config.h.in b/src/vppinfra/config.h.in index 1a8e03184a9..7aad027a8b6 100644 --- a/src/vppinfra/config.h.in +++ b/src/vppinfra/config.h.in @@ -21,4 +21,6 @@ #endif #define CLIB_TARGET_TRIPLET "@CMAKE_C_COMPILER_TARGET@" +#define CLIB_VECTOR_GROW_BY_ONE @VECTOR_GROW_BY_ONE@ + #endif diff --git a/src/vppinfra/vec.c b/src/vppinfra/vec.c index 2ee78952d19..05a557ebb54 100644 --- a/src/vppinfra/vec.c +++ b/src/vppinfra/vec.c @@ -95,9 +95,13 @@ vec_resize_allocate_memory (void *v, return v; } +#if CLIB_VECTOR_GROW_BY_ONE > 0 + new_alloc_bytes = data_bytes; +#else new_alloc_bytes = (old_alloc_bytes * 3) / 2; if (new_alloc_bytes < data_bytes) new_alloc_bytes = data_bytes; +#endif new = clib_mem_alloc_aligned_at_offset (new_alloc_bytes, data_align, |