From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Hunt, David" Subject: Re: [dpdk-dev, v5, 2/3] app/test: test external mempool handler Date: Tue, 31 May 2016 10:17:41 +0100 Message-ID: <574D56B5.8040009@intel.com> References: <1463665501-18325-3-git-send-email-david.hunt@intel.com> <20160523144530.290b8e97@pcviktorin.fit.vutbr.cz> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org, olivier.matz@6wind.com, yuanhan.liu@linux.intel.com, pmatilai@redhat.com To: Jan Viktorin Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 05D492BB9 for ; Tue, 31 May 2016 11:17:43 +0200 (CEST) In-Reply-To: <20160523144530.290b8e97@pcviktorin.fit.vutbr.cz> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Hi Jan, On 5/23/2016 1:45 PM, Jan Viktorin wrote: > On Thu, 19 May 2016 14:45:00 +0100 > David Hunt wrote: --snip-- >> + * Loop though all the element pointers and allocate a chunk of memory, then > s/though/through/ Fixed. >> +static struct rte_mempool_handler mempool_handler_custom = { >> + .name = "custom_handler", >> + .alloc = custom_mempool_alloc, >> + .free = custom_mempool_free, >> + .put = custom_mempool_put, >> + .get = custom_mempool_get, >> + .get_count = custom_mempool_get_count, >> +}; >> + >> +MEMPOOL_REGISTER_HANDLER(mempool_handler_custom); > What about to drop the rte_mempool_handler.name field and derive the > name from the variable name given to the MEMPOOL_REGISTER_HANDLER. > The MEMPOOL_REGISTER_HANDLER sould do some macro magic inside and call > > rte_mempool_handler_register(name, handler); > > Just an idea... Lets see if anyone else has any strong opinions on this :) >> + >> +/* >> * save the object number in the first 4 bytes of object data. All >> * other bytes are set to 0. >> */ >> @@ -479,6 +569,7 @@ test_mempool(void) >> { >> struct rte_mempool *mp_cache = NULL; >> struct rte_mempool *mp_nocache = NULL; >> + struct rte_mempool *mp_ext = NULL; >> >> rte_atomic32_init(&synchro); >> >> @@ -507,6 +598,27 @@ test_mempool(void) >> goto err; >> } >> >> + /* create a mempool with an external handler */ >> + mp_ext = rte_mempool_create_empty("test_ext", >> + MEMPOOL_SIZE, >> + MEMPOOL_ELT_SIZE, >> + RTE_MEMPOOL_CACHE_MAX_SIZE, 0, >> + SOCKET_ID_ANY, 0); >> + >> + if (mp_ext == NULL) { >> + printf("cannot allocate mp_ext mempool\n"); >> + goto err; >> + } >> + if (rte_mempool_set_handler(mp_ext, "custom_handler") < 0) { >> + printf("cannot set custom handler\n"); >> + goto err; >> + } >> + if (rte_mempool_populate_default(mp_ext) < 0) { >> + printf("cannot populate mp_ext mempool\n"); >> + goto err; >> + } >> + rte_mempool_obj_iter(mp_ext, my_obj_init, NULL); >> + > The test becomes quite complex. What about having several smaller > tests with a clear setup and cleanup steps? I guess that's something we can look at in the future. For the moment can we leave it? Thanks, Dave.