Add an inline accessor function to return the starting address of
the private data area in the supplied mbuf.

If the user did not allocate space for a private data area in the
mbuf's memory pool, then return NULL.

This allows applications to easily access the private data area
between the struct rte_mbuf and the data buffer in the specified mbuf
without creating private macros or accessor functions.

Signed-off-by: Dan Gora <d...@adax.com>
---
 lib/librte_mbuf/rte_mbuf.h | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/lib/librte_mbuf/rte_mbuf.h b/lib/librte_mbuf/rte_mbuf.h
index 8e6b4d292..0c4f8f698 100644
--- a/lib/librte_mbuf/rte_mbuf.h
+++ b/lib/librte_mbuf/rte_mbuf.h
@@ -728,6 +728,25 @@ rte_mbuf_to_baddr(struct rte_mbuf *md)
        return buffer_addr;
 }
 
+/**
+ * Return the starting address of the private data area embedded in
+ * the given mbuf.
+ *
+ * @param md
+ *   The pointer to the mbuf.
+ * @return
+ *   The starting address of the private data area or NULL if there
+ *   is no private data area.
+ */
+static inline void *
+rte_mbuf_to_priv(struct rte_mbuf *md)
+{
+       if (md->priv_size == 0)
+               return NULL;
+
+       return RTE_PTR_ADD(md, sizeof(struct rte_mbuf));
+}
+
 /**
  * Returns TRUE if given mbuf is cloned by mbuf indirection, or FALSE
  * otherwise.
-- 
2.17.0.582.gccdcbd54c4

Reply via email to