aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--platform/linux-generic/include/odp/api/plat/buffer_inlines.h2
-rw-r--r--platform/linux-generic/include/odp/api/plat/packet_inlines.h2
-rw-r--r--platform/linux-generic/include/odp/api/plat/packet_vector_inlines.h2
-rw-r--r--platform/linux-generic/include/odp_event_internal.h5
-rw-r--r--platform/linux-generic/include/odp_packet_internal.h8
-rw-r--r--platform/linux-generic/odp_buffer.c2
-rw-r--r--platform/linux-generic/odp_event.c2
-rw-r--r--platform/linux-generic/odp_packet.c40
-rw-r--r--platform/linux-generic/odp_packet_vector.c4
-rw-r--r--platform/linux-generic/odp_pool.c8
-rw-r--r--platform/linux-generic/pktio/ipc.c2
-rw-r--r--platform/linux-generic/pktio/socket_xdp.c2
12 files changed, 40 insertions, 39 deletions
diff --git a/platform/linux-generic/include/odp/api/plat/buffer_inlines.h b/platform/linux-generic/include/odp/api/plat/buffer_inlines.h
index 9466ff73d..576eb846e 100644
--- a/platform/linux-generic/include/odp/api/plat/buffer_inlines.h
+++ b/platform/linux-generic/include/odp/api/plat/buffer_inlines.h
@@ -46,7 +46,7 @@ _ODP_INLINE void *odp_buffer_addr(odp_buffer_t buf)
_ODP_INLINE odp_pool_t odp_buffer_pool(odp_buffer_t buf)
{
- return (odp_pool_t)(uintptr_t)_odp_event_hdr_field(buf, void *, pool);
+ return _odp_event_hdr_field(buf, odp_pool_t, pool);
}
/** @endcond */
diff --git a/platform/linux-generic/include/odp/api/plat/packet_inlines.h b/platform/linux-generic/include/odp/api/plat/packet_inlines.h
index 0fc46e056..950ede8d7 100644
--- a/platform/linux-generic/include/odp/api/plat/packet_inlines.h
+++ b/platform/linux-generic/include/odp/api/plat/packet_inlines.h
@@ -127,7 +127,7 @@ _ODP_INLINE uint32_t odp_packet_tailroom(odp_packet_t pkt)
_ODP_INLINE odp_pool_t odp_packet_pool(odp_packet_t pkt)
{
- return (odp_pool_t)(uintptr_t)_odp_pkt_get(pkt, void *, pool);
+ return _odp_pkt_get(pkt, odp_pool_t, pool);
}
_ODP_INLINE odp_pktio_t odp_packet_input(odp_packet_t pkt)
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 63fa6869b..c8da1b77a 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
@@ -59,7 +59,7 @@ _ODP_INLINE uint32_t odp_packet_vector_tbl(odp_packet_vector_t pktv, odp_packet_
_ODP_INLINE odp_pool_t odp_packet_vector_pool(odp_packet_vector_t pktv)
{
- return (odp_pool_t)(uintptr_t)_odp_event_vect_get(pktv, void *, pool);
+ return _odp_event_vect_get(pktv, odp_pool_t, pool);
}
_ODP_INLINE uint32_t odp_packet_vector_size(odp_packet_vector_t pktv)
diff --git a/platform/linux-generic/include/odp_event_internal.h b/platform/linux-generic/include/odp_event_internal.h
index 60788fd52..5a29e926e 100644
--- a/platform/linux-generic/include/odp_event_internal.h
+++ b/platform/linux-generic/include/odp_event_internal.h
@@ -19,6 +19,7 @@ extern "C" {
#include <odp/api/debug.h>
#include <odp/api/event.h>
+#include <odp/api/pool_types.h>
#include <odp/api/std_types.h>
#include <odp_config_internal.h>
@@ -47,8 +48,8 @@ typedef struct _odp_event_hdr_t {
/* Initial buffer data pointer */
uint8_t *base_data;
- /* Pool pointer */
- void *pool_ptr;
+ /* Pool handle */
+ odp_pool_t pool;
/* --- Mostly read only data --- */
diff --git a/platform/linux-generic/include/odp_packet_internal.h b/platform/linux-generic/include/odp_packet_internal.h
index f9fdb2c3b..253650b6d 100644
--- a/platform/linux-generic/include/odp_packet_internal.h
+++ b/platform/linux-generic/include/odp_packet_internal.h
@@ -221,7 +221,7 @@ static inline void packet_subtype_set(odp_packet_t pkt, int ev)
*/
static inline void packet_init(odp_packet_hdr_t *pkt_hdr, uint32_t len)
{
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
uint32_t seg_len;
int num = pkt_hdr->seg_count;
@@ -337,8 +337,8 @@ static inline void _odp_packet_copy_md(odp_packet_hdr_t *dst_hdr,
if (src_hdr->uarea_addr) {
if (uarea_copy) {
- const pool_t *src_pool = src_hdr->event_hdr.pool_ptr;
- const pool_t *dst_pool = dst_hdr->event_hdr.pool_ptr;
+ const pool_t *src_pool = _odp_pool_entry(src_hdr->event_hdr.pool);
+ const pool_t *dst_pool = _odp_pool_entry(dst_hdr->event_hdr.pool);
const uint32_t src_uarea_size = src_pool->param_uarea_size;
const uint32_t dst_uarea_size = dst_pool->param_uarea_size;
@@ -351,7 +351,7 @@ static inline void _odp_packet_copy_md(odp_packet_hdr_t *dst_hdr,
/* If user area exists, packets should always be from the same pool, so
* user area pointers can simply be swapped. */
- ODP_ASSERT(dst_hdr->event_hdr.pool_ptr == src_hdr->event_hdr.pool_ptr);
+ ODP_ASSERT(dst_hdr->event_hdr.pool == src_hdr->event_hdr.pool);
src_hdr->uarea_addr = dst_hdr->uarea_addr;
dst_hdr->uarea_addr = src_uarea;
diff --git a/platform/linux-generic/odp_buffer.c b/platform/linux-generic/odp_buffer.c
index df3f047b1..609b0b206 100644
--- a/platform/linux-generic/odp_buffer.c
+++ b/platform/linux-generic/odp_buffer.c
@@ -18,7 +18,7 @@
uint32_t odp_buffer_size(odp_buffer_t buf)
{
odp_buffer_hdr_t *hdr = _odp_buf_hdr(buf);
- pool_t *pool = hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(hdr->event_hdr.pool);
return pool->seg_len;
}
diff --git a/platform/linux-generic/odp_event.c b/platform/linux-generic/odp_event.c
index a528b5d81..5a1f68621 100644
--- a/platform/linux-generic/odp_event.c
+++ b/platform/linux-generic/odp_event.c
@@ -36,7 +36,7 @@ _odp_event_inline_offset ODP_ALIGNED_CACHE = {
.event_type = offsetof(_odp_event_hdr_t, event_type),
.base_data = offsetof(_odp_event_hdr_t, base_data),
.flow_id = offsetof(_odp_event_hdr_t, flow_id),
- .pool = offsetof(_odp_event_hdr_t, pool_ptr),
+ .pool = offsetof(_odp_event_hdr_t, pool),
};
#include <odp/visibility_end.h>
diff --git a/platform/linux-generic/odp_packet.c b/platform/linux-generic/odp_packet.c
index 04848d80d..d96eb8748 100644
--- a/platform/linux-generic/odp_packet.c
+++ b/platform/linux-generic/odp_packet.c
@@ -53,7 +53,7 @@ const _odp_packet_inline_offset_t _odp_packet_inline ODP_ALIGNED_CACHE = {
.frame_len = offsetof(odp_packet_hdr_t, frame_len),
.headroom = offsetof(odp_packet_hdr_t, headroom),
.tailroom = offsetof(odp_packet_hdr_t, tailroom),
- .pool = offsetof(odp_packet_hdr_t, event_hdr.pool_ptr),
+ .pool = offsetof(odp_packet_hdr_t, event_hdr.pool),
.input = offsetof(odp_packet_hdr_t, input),
.seg_count = offsetof(odp_packet_hdr_t, seg_count),
.user_ptr = offsetof(odp_packet_hdr_t, user_ptr),
@@ -143,7 +143,7 @@ static inline void *packet_tail(odp_packet_hdr_t *pkt_hdr)
static inline uint32_t seg_headroom(odp_packet_hdr_t *pkt_seg)
{
_odp_event_hdr_t *hdr = &pkt_seg->event_hdr;
- pool_t *pool = hdr->pool_ptr;
+ pool_t *pool = _odp_pool_entry(hdr->pool);
uint8_t *base = hdr->base_data;
uint8_t *head = pkt_seg->seg_data;
@@ -273,7 +273,7 @@ static inline void link_segments(odp_packet_hdr_t *pkt_hdr[], int num)
int cur = 0;
odp_packet_hdr_t *hdr;
odp_packet_hdr_t *head = pkt_hdr[0];
- uint32_t seg_len = ((pool_t *)(head->event_hdr.pool_ptr))->seg_len;
+ uint32_t seg_len = _odp_pool_entry(head->event_hdr.pool)->seg_len;
while (1) {
_odp_event_hdr_t *event_hdr = &pkt_hdr[cur]->event_hdr;
@@ -312,7 +312,7 @@ static inline void init_segments(odp_packet_hdr_t *pkt_hdr[], int num)
/* First segment is the packet descriptor */
hdr = pkt_hdr[0];
- seg_len = ((pool_t *)(hdr->event_hdr.pool_ptr))->seg_len;
+ seg_len = _odp_pool_entry(hdr->event_hdr.pool)->seg_len;
/* Defaults for single segment packet */
hdr->seg_data = hdr->event_hdr.base_data;
@@ -336,7 +336,7 @@ static inline void init_segments(odp_packet_hdr_t *pkt_hdr[], int num)
static inline void reset_segments(odp_packet_hdr_t *pkt_hdr)
{
void *base;
- uint32_t seg_len = ((pool_t *)(pkt_hdr->event_hdr.pool_ptr))->seg_len;
+ uint32_t seg_len = _odp_pool_entry(pkt_hdr->event_hdr.pool)->seg_len;
while (pkt_hdr != NULL) {
base = pkt_hdr->event_hdr.base_data;
@@ -734,7 +734,7 @@ void odp_packet_free_sp(const odp_packet_t pkt[], int num)
int odp_packet_reset(odp_packet_t pkt, uint32_t len)
{
odp_packet_hdr_t *const pkt_hdr = packet_hdr(pkt);
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
int num = pkt_hdr->seg_count;
int num_req;
@@ -783,7 +783,7 @@ int odp_event_filter_packet(const odp_event_t event[],
uint32_t odp_packet_buf_len(odp_packet_t pkt)
{
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
return pool->max_seg_len * pkt_hdr->seg_count;
}
@@ -815,7 +815,7 @@ int odp_packet_extend_head(odp_packet_t *pkt, uint32_t len,
int ret = 0;
if (len > headroom) {
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
int num;
void *ptr;
@@ -924,7 +924,7 @@ int odp_packet_extend_tail(odp_packet_t *pkt, uint32_t len,
ODP_ASSERT(odp_packet_has_ref(*pkt) == 0);
if (len > tailroom) {
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
int num;
void *ptr;
@@ -1168,13 +1168,13 @@ int odp_packet_add_data(odp_packet_t *pkt_ptr, uint32_t offset, uint32_t len)
odp_packet_t pkt = *pkt_ptr;
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
uint32_t pktlen = pkt_hdr->frame_len;
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ odp_pool_t pool = pkt_hdr->event_hdr.pool;
odp_packet_t newpkt;
if (offset > pktlen)
return -1;
- newpkt = odp_packet_alloc(_odp_pool_handle(pool), pktlen + len);
+ newpkt = odp_packet_alloc(pool, pktlen + len);
if (newpkt == ODP_PACKET_INVALID)
return -1;
@@ -1198,13 +1198,13 @@ int odp_packet_rem_data(odp_packet_t *pkt_ptr, uint32_t offset, uint32_t len)
odp_packet_t pkt = *pkt_ptr;
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
uint32_t pktlen = pkt_hdr->frame_len;
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ odp_pool_t pool = pkt_hdr->event_hdr.pool;
odp_packet_t newpkt;
if (offset + len >= pktlen)
return -1;
- newpkt = odp_packet_alloc(_odp_pool_handle(pool), pktlen - len);
+ newpkt = odp_packet_alloc(pool, pktlen - len);
if (newpkt == ODP_PACKET_INVALID)
return -1;
@@ -1230,7 +1230,7 @@ int odp_packet_align(odp_packet_t *pkt, uint32_t offset, uint32_t len,
uint32_t shift;
uint32_t seglen = 0; /* GCC */
odp_packet_hdr_t *pkt_hdr = packet_hdr(*pkt);
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
void *addr = packet_map(pkt_hdr, offset, &seglen, NULL);
uint64_t uaddr = (uint64_t)(uintptr_t)addr;
uint64_t misalign;
@@ -1272,8 +1272,8 @@ int odp_packet_concat(odp_packet_t *dst, odp_packet_t src)
{
odp_packet_hdr_t *dst_hdr = packet_hdr(*dst);
odp_packet_hdr_t *src_hdr = packet_hdr(src);
- pool_t *dst_pool = dst_hdr->event_hdr.pool_ptr;
- pool_t *src_pool = src_hdr->event_hdr.pool_ptr;
+ pool_t *dst_pool = _odp_pool_entry(dst_hdr->event_hdr.pool);
+ pool_t *src_pool = _odp_pool_entry(src_hdr->event_hdr.pool);
uint32_t dst_len = dst_hdr->frame_len;
uint32_t src_len = src_hdr->frame_len;
@@ -1618,7 +1618,7 @@ void odp_packet_print_data(odp_packet_t pkt, uint32_t offset,
int len = 0;
int n = max_len - 1;
uint32_t data_len = odp_packet_len(pkt);
- pool_t *pool = hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(hdr->event_hdr.pool);
len += snprintf(&str[len], n - len, "Packet\n------\n");
len += snprintf(&str[len], n - len,
@@ -2440,7 +2440,7 @@ static inline odp_packet_hdr_t *packet_buf_to_hdr(odp_packet_buf_t pkt_buf)
void *odp_packet_buf_head(odp_packet_buf_t pkt_buf)
{
odp_packet_hdr_t *pkt_hdr = packet_buf_to_hdr(pkt_buf);
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
uint32_t head_offset = sizeof(odp_packet_hdr_t) + pool->ext_param.pkt.app_header_size;
if (odp_unlikely(pool->pool_ext == 0)) {
@@ -2454,7 +2454,7 @@ void *odp_packet_buf_head(odp_packet_buf_t pkt_buf)
uint32_t odp_packet_buf_size(odp_packet_buf_t pkt_buf)
{
odp_packet_hdr_t *pkt_hdr = packet_buf_to_hdr(pkt_buf);
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
uint32_t head_offset = sizeof(odp_packet_hdr_t) + pool->ext_param.pkt.app_header_size;
return pool->ext_param.pkt.buf_size - head_offset;
@@ -2506,7 +2506,7 @@ uint32_t odp_packet_disassemble(odp_packet_t pkt, odp_packet_buf_t pkt_buf[], ui
uint32_t i;
odp_packet_seg_t seg;
odp_packet_hdr_t *pkt_hdr = packet_hdr(pkt);
- pool_t *pool = pkt_hdr->event_hdr.pool_ptr;
+ pool_t *pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
uint32_t num_segs = odp_packet_num_segs(pkt);
if (odp_unlikely(pool->type != ODP_POOL_PACKET)) {
diff --git a/platform/linux-generic/odp_packet_vector.c b/platform/linux-generic/odp_packet_vector.c
index 4c0f09013..e0b99183f 100644
--- a/platform/linux-generic/odp_packet_vector.c
+++ b/platform/linux-generic/odp_packet_vector.c
@@ -23,7 +23,7 @@
/* Packet vector header field offsets for inline functions */
const _odp_event_vector_inline_offset_t _odp_event_vector_inline ODP_ALIGNED_CACHE = {
.packet = offsetof(odp_event_vector_hdr_t, packet),
- .pool = offsetof(odp_event_vector_hdr_t, event_hdr.pool_ptr),
+ .pool = offsetof(odp_event_vector_hdr_t, event_hdr.pool),
.size = offsetof(odp_event_vector_hdr_t, size)
};
@@ -82,7 +82,7 @@ int odp_packet_vector_valid(odp_packet_vector_t pktv)
return 0;
pktv_hdr = _odp_packet_vector_hdr(pktv);
- pool = pktv_hdr->event_hdr.pool_ptr;
+ pool = _odp_pool_entry(pktv_hdr->event_hdr.pool);
if (odp_unlikely(pktv_hdr->size > pool->params.vector.max_size))
return 0;
diff --git a/platform/linux-generic/odp_pool.c b/platform/linux-generic/odp_pool.c
index f76cb1e47..d841796e1 100644
--- a/platform/linux-generic/odp_pool.c
+++ b/platform/linux-generic/odp_pool.c
@@ -424,7 +424,7 @@ static void init_event_hdr(pool_t *pool, _odp_event_hdr_t *event_hdr, uint32_t e
event_hdr->index.event = event_index;
event_hdr->type = type;
event_hdr->event_type = type;
- event_hdr->pool_ptr = pool;
+ event_hdr->pool = _odp_pool_handle(pool);
/* Store base values for fast init */
if (type == ODP_POOL_BUFFER || type == ODP_POOL_PACKET) {
@@ -1289,12 +1289,12 @@ void _odp_event_free_multi(_odp_event_hdr_t *event_hdr[], int num_total)
while (1) {
num = 1;
i = 1;
- pool = event_hdr[first]->pool_ptr;
+ pool = _odp_pool_entry(event_hdr[first]->pool);
/* 'num' buffers are from the same pool */
if (num_total > 1) {
for (i = first; i < num_total; i++)
- if (pool != event_hdr[i]->pool_ptr)
+ if (pool != _odp_pool_entry(event_hdr[i]->pool))
break;
num = i - first;
@@ -1636,7 +1636,7 @@ int _odp_event_is_valid(odp_event_t event)
if (pool == NULL)
return 0;
- if (pool != event_hdr->pool_ptr)
+ if (pool != _odp_pool_entry(event_hdr->pool))
return 0;
if (event_hdr->index.event >= (pool->num + pool->skipped_blocks))
diff --git a/platform/linux-generic/pktio/ipc.c b/platform/linux-generic/pktio/ipc.c
index 42cb1bec1..f3246c068 100644
--- a/platform/linux-generic/pktio/ipc.c
+++ b/platform/linux-generic/pktio/ipc.c
@@ -791,7 +791,7 @@ static int ipc_pktio_send_lockless(pktio_entry_t *pktio_entry,
pool_t *pool;
pkt_hdr = packet_hdr(pkt);
- pool = pkt_hdr->event_hdr.pool_ptr;
+ pool = _odp_pool_entry(pkt_hdr->event_hdr.pool);
if (pool->pool_idx != ipc_pool->pool_idx ||
odp_packet_has_ref(pkt)) {
diff --git a/platform/linux-generic/pktio/socket_xdp.c b/platform/linux-generic/pktio/socket_xdp.c
index 5ea4e1118..7e8877359 100644
--- a/platform/linux-generic/pktio/socket_xdp.c
+++ b/platform/linux-generic/pktio/socket_xdp.c
@@ -736,7 +736,7 @@ static int sock_xdp_send(pktio_entry_t *pktio_entry, int index, const odp_packet
pkt_hdr = packet_hdr(packets[i]);
seg_cnt = pkt_hdr->seg_count;
- if (pkt_hdr->event_hdr.pool_ptr != pool) {
+ if (_odp_pool_entry(pkt_hdr->event_hdr.pool) != pool) {
pkt = odp_packet_copy(packets[i], pool_hdl);
if (odp_unlikely(pkt == ODP_PACKET_INVALID)) {