From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maxime Coquelin Subject: Re: [PATCH v4 2/5] lib/mbuf: introduce helper to create mempool with flags Date: Fri, 22 Mar 2019 15:36:08 +0100 Message-ID: <4118b1b6-7c9b-fc7d-f74e-03c066cb5513@redhat.com> References: <20190301080947.91086-1-xiaolong.ye@intel.com> <20190322130129.109964-1-xiaolong.ye@intel.com> <20190322130129.109964-3-xiaolong.ye@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: Qi Zhang , Karlsson Magnus , Topel Bjorn To: Xiaolong Ye , dev@dpdk.org Return-path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by dpdk.org (Postfix) with ESMTP id 97D771B5FE for ; Fri, 22 Mar 2019 15:36:12 +0100 (CET) In-Reply-To: <20190322130129.109964-3-xiaolong.ye@intel.com> Content-Language: en-US List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On 3/22/19 2:01 PM, Xiaolong Ye wrote: > This allows applications to create mbuf mempool with specific flags > such as MEMPOOL_F_NO_SPREAD if they want fixed size memory objects. > > Signed-off-by: Qi Zhang > Signed-off-by: Xiaolong Ye > --- > lib/librte_mbuf/rte_mbuf.c | 29 +++++++++++++++++++----- > lib/librte_mbuf/rte_mbuf.h | 45 ++++++++++++++++++++++++++++++++++++++ > 2 files changed, 69 insertions(+), 5 deletions(-) > > +/** > + * Create a mbuf pool with flags. > + * > + * This function creates and initializes a packet mbuf pool. It is > + * a wrapper to rte_mempool functions. > + * > + * @warning > + * @b EXPERIMENTAL: This API may change without prior notice. > + * > + * @param name > + * The name of the mbuf pool. > + * @param n > + * The number of elements in the mbuf pool. The optimum size (in terms > + * of memory usage) for a mempool is when n is a power of two minus one: > + * n = (2^q - 1). > + * @param cache_size > + * Size of the per-core object cache. See rte_mempool_create() for > + * details. > + * @param priv_size > + * Size of application private are between the rte_mbuf structure > + * and the data buffer. This value must be aligned to RTE_MBUF_PRIV_ALIGN. > + * @param data_room_size > + * Size of data buffer in each mbuf, including RTE_PKTMBUF_HEADROOM. > + * @param flags > + * Flags controlling the behavior of the mempool. See > + * rte_mempool_create() for details. > + * @param socket_id > + * The socket identifier where the memory should be allocated. The > + * value can be *SOCKET_ID_ANY* if there is no NUMA constraint for the > + * reserved zone. > + * @return > + * The pointer to the new allocated mempool, on success. NULL on error > + * with rte_errno set appropriately. Possible rte_errno values include: > + * - E_RTE_NO_CONFIG - function could not get pointer to rte_config structure > + * - E_RTE_SECONDARY - function was called from a secondary process instance > + * - EINVAL - cache size provided is too large, or priv_size is not aligned. > + * - ENOSPC - the maximum number of memzones has already been allocated > + * - EEXIST - a memzone with the same name already exists > + * - ENOMEM - no appropriate memory area found in which to create memzone > + */ > +struct rte_mempool * __rte_experimental > +rte_pktmbuf_pool_create_with_flags(const char *name, unsigned int n, > + unsigned int cache_size, uint16_t priv_size, uint16_t data_room_size, > + unsigned int flags, int socket_id); > + > /** > * Create a mbuf pool with a given mempool ops name > * > You need to add it to rte_mbuf_version.map too.