From 1da361f9ea525663a1141c3665a67df5e81c4133 Mon Sep 17 00:00:00 2001 From: Damjan Marion Date: Wed, 16 Mar 2022 17:57:29 +0100 Subject: vppinfra: store vector header size and alignment into header On the forst vector alloc values are stored into header. Later, when vector grows values from header are used istead of provided ones. In the debug image code will assert if same values are not provided. Type: improvement Change-Id: I8fdcfa495e9c1df0f6392c90f634e8c74b73b328 Signed-off-by: Damjan Marion --- src/vppinfra/vec_bootstrap.h | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/vppinfra/vec_bootstrap.h') diff --git a/src/vppinfra/vec_bootstrap.h b/src/vppinfra/vec_bootstrap.h index f2940288110..d628d3827f9 100644 --- a/src/vppinfra/vec_bootstrap.h +++ b/src/vppinfra/vec_bootstrap.h @@ -56,12 +56,16 @@ typedef struct { u32 len; /**< Number of elements in vector (NOT its allocated length). */ u8 numa_id; /**< NUMA id */ - u8 vpad[3]; /**< pad to 8 bytes */ + u8 hdr_size; /**< header size divided by VEC_HEADER_ROUND */ + u8 log2_align; /**< data alignment */ + u8 vpad[1]; /**< pad to 8 bytes */ u8 vector_data[0]; /**< Vector data . */ } vec_header_t; #define VEC_NUMA_UNSPECIFIED (0xFF) +#define VEC_HEADER_ROUND 8 + /** \brief Find the vector header Given the user's pointer to a vector, find the corresponding @@ -78,8 +82,7 @@ typedef struct always_inline uword vec_header_bytes (uword header_bytes) { - return round_pow2 (header_bytes + sizeof (vec_header_t), - sizeof (vec_header_t)); + return round_pow2 (header_bytes + sizeof (vec_header_t), VEC_HEADER_ROUND); } /** \brief Find a user vector header -- cgit 1.2.3-korg