diff options
author | Matias Elo <matias.elo@nokia.com> | 2020-09-30 10:51:10 +0300 |
---|---|---|
committer | Petri Savolainen <petri.savolainen@nokia.com> | 2020-11-19 09:49:08 +0200 |
commit | 4027c43f0c6306db0574744f68374e0c702c016d (patch) | |
tree | 8ce79dbc165c2620e4b60ba4023183325f63f6d3 /platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h | |
parent | 4ca50cfffb7dc8256893f6fc303168555ba9044a (diff) |
linux-gen: packet_vector: implement fast path functions
Implement odp_packet_vector_tbl(), odp_packet_vector_pool(),
odp_packet_vector_size(), and odp_packet_vector_size_set() as inline
functions.
Signed-off-by: Matias Elo <matias.elo@nokia.com>
Reviewed-by: Petri Savolainen <petri.savolainen@nokia.com>
Diffstat (limited to 'platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h')
-rw-r--r-- | platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h b/platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h index 58159a54c..b63f13909 100644 --- a/platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h +++ b/platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h @@ -16,6 +16,12 @@ #include <odp/api/abi/event.h> #include <odp/api/abi/packet.h> +#include <odp/api/abi/pool.h> + +#include <odp/api/plat/event_vector_inline_types.h> +#include <odp/api/plat/pool_inline_types.h> + +#include <stdint.h> /** @cond _ODP_HIDE_FROM_DOXYGEN_ */ @@ -24,11 +30,18 @@ #define _ODP_INLINE static inline #define odp_packet_vector_from_event __odp_packet_vector_from_event #define odp_packet_vector_to_event __odp_packet_vector_to_event + #define odp_packet_vector_tbl __odp_packet_vector_tbl + #define odp_packet_vector_pool __odp_packet_vector_pool + #define odp_packet_vector_size __odp_packet_vector_size + #define odp_packet_vector_size_set __odp_packet_vector_size_set #else #undef _ODP_INLINE #define _ODP_INLINE #endif +extern const _odp_event_vector_inline_offset_t _odp_event_vector_inline; +extern const _odp_pool_inline_offset_t _odp_pool_inline; + _ODP_INLINE odp_packet_vector_t odp_packet_vector_from_event(odp_event_t ev) { return (odp_packet_vector_t)ev; @@ -39,6 +52,32 @@ _ODP_INLINE odp_event_t odp_packet_vector_to_event(odp_packet_vector_t pktv) return (odp_event_t)pktv; } +_ODP_INLINE uint32_t odp_packet_vector_tbl(odp_packet_vector_t pktv, odp_packet_t **pkt_tbl) +{ + *pkt_tbl = _odp_event_vect_get_ptr(pktv, odp_packet_t, packet); + + return _odp_event_vect_get(pktv, uint32_t, size); +} + +_ODP_INLINE odp_pool_t odp_packet_vector_pool(odp_packet_vector_t pktv) +{ + void *pool = _odp_event_vect_get(pktv, void *, pool); + + return _odp_pool_get(pool, odp_pool_t, pool_hdl); +} + +_ODP_INLINE uint32_t odp_packet_vector_size(odp_packet_vector_t pktv) +{ + return _odp_event_vect_get(pktv, uint32_t, size); +} + +_ODP_INLINE void odp_packet_vector_size_set(odp_packet_vector_t pktv, uint32_t size) +{ + uint32_t *vector_size = _odp_event_vect_get_ptr(pktv, uint32_t, size); + + *vector_size = size; +} + /** @endcond */ #endif |