From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.droids-corp.org (zoll.droids-corp.org [94.23.50.67]) by dpdk.org (Postfix) with ESMTP id 5C4F11B64C for ; Wed, 31 Jan 2018 17:45:45 +0100 (CET) Received: from lfbn-lil-1-110-231.w90-45.abo.wanadoo.fr ([90.45.197.231] helo=droids-corp.org) by mail.droids-corp.org with esmtpsa (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1egvWA-0006Vj-GP; Wed, 31 Jan 2018 17:45:55 +0100 Received: by droids-corp.org (sSMTP sendmail emulation); Wed, 31 Jan 2018 17:45:39 +0100 Date: Wed, 31 Jan 2018 17:45:39 +0100 From: Olivier Matz To: Andrew Rybchenko Cc: dev@dpdk.org, "Artem V. Andreev" Message-ID: <20180131164539.qhpfx3vp6k5h2ufp@platinum> References: <1511539591-20966-1-git-send-email-arybchenko@solarflare.com> <1516713372-10572-1-git-send-email-arybchenko@solarflare.com> <1516713372-10572-12-git-send-email-arybchenko@solarflare.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1516713372-10572-12-git-send-email-arybchenko@solarflare.com> User-Agent: NeoMutt/20170113 (1.7.2) Subject: Re: [dpdk-dev] [RFC v2 11/17] mempool: ensure the mempool is initialized before populating X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 31 Jan 2018 16:45:45 -0000 On Tue, Jan 23, 2018 at 01:16:06PM +0000, Andrew Rybchenko wrote: > From: "Artem V. Andreev" > > Callback to calculate required memory area size may require mempool > driver data to be already allocated and initialized. > > Signed-off-by: Artem V. Andreev > Signed-off-by: Andrew Rybchenko > --- > lib/librte_mempool/rte_mempool.c | 29 ++++++++++++++++++++++------- > 1 file changed, 22 insertions(+), 7 deletions(-) > > diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c > index fc9c95a..cbb4dd5 100644 > --- a/lib/librte_mempool/rte_mempool.c > +++ b/lib/librte_mempool/rte_mempool.c > @@ -370,6 +370,21 @@ rte_mempool_free_memchunks(struct rte_mempool *mp) > } > } > > +static int > +mempool_maybe_initialize(struct rte_mempool *mp) > +{ > + int ret; > + > + /* create the internal ring if not already done */ > + if ((mp->flags & MEMPOOL_F_POOL_CREATED) == 0) { > + ret = rte_mempool_ops_alloc(mp); > + if (ret != 0) > + return ret; > + mp->flags |= MEMPOOL_F_POOL_CREATED; > + } > + return 0; > +} mempool_ops_alloc_once() ?