X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvppinfra%2Fvec_bootstrap.h;h=5cf5d3b76a1ad4ff45f124fc6a30d62f182ed559;hb=06111a837;hp=879703c8f6a0c29acf0b3e90109ea8840d211ebe;hpb=a690fdbfe179e0ea65818c03b52535bf9210efd0;p=vpp.git diff --git a/src/vppinfra/vec_bootstrap.h b/src/vppinfra/vec_bootstrap.h index 879703c8f6a..5cf5d3b76a1 100644 --- a/src/vppinfra/vec_bootstrap.h +++ b/src/vppinfra/vec_bootstrap.h @@ -54,13 +54,9 @@ typedef struct { -#if CLIB_VEC64 > 0 - u64 len; -#else u32 len; /**< Number of elements in vector (NOT its allocated length). */ u8 numa_id; /**< NUMA id */ u8 vpad[3]; /**< pad to 8 bytes */ -#endif u8 vector_data[0]; /**< Vector data . */ } vec_header_t; @@ -144,6 +140,7 @@ vec_aligned_header_end (void *v, uword header_bytes, uword align) */ #define vec_len(v) ((v) ? _vec_len(v) : 0) +u32 vec_len_not_inline (void *v); /** \brief Vector's NUMA id (lvalue-capable) @@ -174,7 +171,8 @@ vec_aligned_header_end (void *v, uword header_bytes, uword align) }) /** \brief Total number of elements that can fit into vector. */ -#define vec_max_len(v) (vec_capacity(v,0) / sizeof (v[0])) +#define vec_max_len(v) \ + ((v) ? (vec_capacity (v,0) - vec_header_bytes (0)) / sizeof (v[0]) : 0) /** \brief Set vector length to a user-defined value */ #ifndef __COVERITY__ /* Coverity gets confused by ASSERT() */