> From: Stephen Hemminger [mailto:stephen@networkplumber.org]
> Sent: Friday, 27 September 2024 22.46
>
> Use rte_alloc_function annotation to catch mismatch errors
> on memzone handling.
>
> Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
> ---
Note for other reviewers:
rte_mempool_free() was intentionally moved up,
so __rte_alloc_func attribute can refer to it.
Reviewed-by: Morten Brørup <mb@smartsharesystems.com>
@@ -1012,6 +1012,20 @@ typedef void (rte_mempool_mem_cb_t)(struct rte_mempool *mp,
*/
typedef void (rte_mempool_ctor_t)(struct rte_mempool *, void *);
+/**
+ * Free a mempool
+ *
+ * Unlink the mempool from global list, free the memory chunks, and all
+ * memory referenced by the mempool. The objects must not be used by
+ * other cores as they will be freed.
+ *
+ * @param mp
+ * A pointer to the mempool structure.
+ * If NULL then, the function does nothing.
+ */
+void
+rte_mempool_free(struct rte_mempool *mp);
+
/**
* Create a new mempool named *name* in memory.
*
@@ -1091,11 +1105,12 @@ typedef void (rte_mempool_ctor_t)(struct rte_mempool *, void *);
* - ENOMEM - no appropriate memory area found in which to create memzone
*/
struct rte_mempool *
-rte_mempool_create(const char *name, unsigned n, unsigned elt_size,
- unsigned cache_size, unsigned private_data_size,
+rte_mempool_create(const char *name, unsigned int n, unsigned int elt_size,
+ unsigned int cache_size, unsigned int private_data_size,
rte_mempool_ctor_t *mp_init, void *mp_init_arg,
rte_mempool_obj_cb_t *obj_init, void *obj_init_arg,
- int socket_id, unsigned flags);
+ int socket_id, unsigned int flags)
+ __rte_alloc_func(rte_mempool_free);
/**
* Create an empty mempool
@@ -1132,22 +1147,10 @@ rte_mempool_create(const char *name, unsigned n, unsigned elt_size,
* with rte_errno set appropriately. See rte_mempool_create() for details.
*/
struct rte_mempool *
-rte_mempool_create_empty(const char *name, unsigned n, unsigned elt_size,
- unsigned cache_size, unsigned private_data_size,
- int socket_id, unsigned flags);
-/**
- * Free a mempool
- *
- * Unlink the mempool from global list, free the memory chunks, and all
- * memory referenced by the mempool. The objects must not be used by
- * other cores as they will be freed.
- *
- * @param mp
- * A pointer to the mempool structure.
- * If NULL then, the function does nothing.
- */
-void
-rte_mempool_free(struct rte_mempool *mp);
+rte_mempool_create_empty(const char *name, unsigned int n, unsigned int elt_size,
+ unsigned int cache_size, unsigned int private_data_size,
+ int socket_id, unsigned int flags)
+ __rte_alloc_func(rte_mempool_free);
/**
* Add physically contiguous memory for objects in the pool at init