aboutsummaryrefslogtreecommitdiff
path: root/platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h
diff options
context:
space:
mode:
authorMatias Elo <matias.elo@nokia.com>2020-09-30 10:51:10 +0300
committerPetri Savolainen <petri.savolainen@nokia.com>2020-11-19 09:49:08 +0200
commit4027c43f0c6306db0574744f68374e0c702c016d (patch)
tree8ce79dbc165c2620e4b60ba4023183325f63f6d3 /platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h
parent4ca50cfffb7dc8256893f6fc303168555ba9044a (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.h39
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