diff options
author | Damjan Marion <damarion@cisco.com> | 2021-12-23 17:05:02 +0100 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2021-12-24 12:44:34 +0000 |
commit | b32bd70c1e83fff90d060ea1bbb41eb55e3f62b1 (patch) | |
tree | a4b45589446dd63741fc662e3bab28fd5a81562f /src/vlib/node_funcs.h | |
parent | 65409fb341c110bf905be0e29833405bb3bbf4e6 (diff) |
vlib: introduce vlib frame aux data
Type: improvement
Change-Id: I53890a13210cfb0d2b2d9d8cfd9b15118d3bb273
Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vlib/node_funcs.h')
-rw-r--r-- | src/vlib/node_funcs.h | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/src/vlib/node_funcs.h b/src/vlib/node_funcs.h index b1d5c7bcacb..46db46dd1e0 100644 --- a/src/vlib/node_funcs.h +++ b/src/vlib/node_funcs.h @@ -283,16 +283,6 @@ vlib_frame_no_append (vlib_frame_t * f) f->frame_flags |= VLIB_FRAME_NO_APPEND; } -/* Byte alignment for vector arguments. */ -#define VLIB_FRAME_VECTOR_ALIGN (1 << 4) - -always_inline u32 -vlib_frame_vector_byte_offset (u32 scalar_size) -{ - return round_pow2 (sizeof (vlib_frame_t) + scalar_size, - VLIB_FRAME_VECTOR_ALIGN); -} - /** \brief Get pointer to frame vector data. @param f vlib_frame_t pointer @return pointer to first vector element in frame @@ -300,7 +290,19 @@ vlib_frame_vector_byte_offset (u32 scalar_size) always_inline void * vlib_frame_vector_args (vlib_frame_t * f) { - return (void *) f + vlib_frame_vector_byte_offset (f->scalar_size); + ASSERT (f->vector_offset); + return (void *) f + f->vector_offset; +} + +/** \brief Get pointer to frame vector aux data. + @param f vlib_frame_t pointer + @return pointer to first vector aux data element in frame +*/ +always_inline void * +vlib_frame_aux_args (vlib_frame_t *f) +{ + ASSERT (f->aux_offset); + return (void *) f + f->aux_offset; } /** \brief Get pointer to frame scalar data. @@ -314,7 +316,8 @@ vlib_frame_vector_args (vlib_frame_t * f) always_inline void * vlib_frame_scalar_args (vlib_frame_t * f) { - return vlib_frame_vector_args (f) - f->scalar_size; + ASSERT (f->scalar_offset); + return (void *) f + f->scalar_offset; } always_inline vlib_next_frame_t * |