mempool: allow config override on element alignment
[dpdk.git] / lib / librte_mempool / rte_mempool.h
index f16019a..ee67ce7 100644 (file)
@@ -142,6 +142,12 @@ struct rte_mempool_objsz {
 /** Mempool over one chunk of physically continuous memory */
 #define        MEMPOOL_PG_NUM_DEFAULT  1
 
+#ifndef RTE_MEMPOOL_ALIGN
+#define RTE_MEMPOOL_ALIGN      RTE_CACHE_LINE_SIZE
+#endif
+
+#define RTE_MEMPOOL_ALIGN_MASK (RTE_MEMPOOL_ALIGN - 1)
+
 /**
  * Mempool object header structure
  *
@@ -262,15 +268,13 @@ struct rte_mempool {
 /* return the header of a mempool object (internal) */
 static inline struct rte_mempool_objhdr *__mempool_get_header(void *obj)
 {
-       return (struct rte_mempool_objhdr *)((char *)obj -
-               sizeof(struct rte_mempool_objhdr));
+       return RTE_PTR_SUB(obj, sizeof(struct rte_mempool_objhdr));
 }
 
 /* return the trailer of a mempool object (internal) */
 static inline struct rte_mempool_objtlr *__mempool_get_trailer(void *obj)
 {
-       return (struct rte_mempool_objtlr *)((char *)obj -
-               sizeof(struct rte_mempool_objtlr));
+       return RTE_PTR_SUB(obj, sizeof(struct rte_mempool_objtlr));
 }
 
 /**