From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <david.hunt@intel.com>
Received: from mga02.intel.com (mga02.intel.com [134.134.136.20])
 by dpdk.org (Postfix) with ESMTP id 05D492BB9
 for <dev@dpdk.org>; Tue, 31 May 2016 11:17:43 +0200 (CEST)
Received: from fmsmga003.fm.intel.com ([10.253.24.29])
 by orsmga101.jf.intel.com with ESMTP; 31 May 2016 02:17:43 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.26,395,1459839600"; d="scan'208";a="711475465"
Received: from dhunt5-mobl.ger.corp.intel.com (HELO [10.237.220.49])
 ([10.237.220.49])
 by FMSMGA003.fm.intel.com with ESMTP; 31 May 2016 02:17:41 -0700
To: Jan Viktorin <viktorin@rehivetech.com>
References: <1463665501-18325-3-git-send-email-david.hunt@intel.com>
 <20160523144530.290b8e97@pcviktorin.fit.vutbr.cz>
Cc: dev@dpdk.org, olivier.matz@6wind.com, yuanhan.liu@linux.intel.com,
 pmatilai@redhat.com
From: "Hunt, David" <david.hunt@intel.com>
Message-ID: <574D56B5.8040009@intel.com>
Date: Tue, 31 May 2016 10:17:41 +0100
User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:38.0) Gecko/20100101
 Thunderbird/38.6.0
MIME-Version: 1.0
In-Reply-To: <20160523144530.290b8e97@pcviktorin.fit.vutbr.cz>
Content-Type: text/plain; charset=windows-1252; format=flowed
Content-Transfer-Encoding: 7bit
Subject: Re: [dpdk-dev] [dpdk-dev, v5,
	2/3] app/test: test external mempool handler
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Tue, 31 May 2016 09:17:44 -0000

Hi Jan,

On 5/23/2016 1:45 PM, Jan Viktorin wrote:
> On Thu, 19 May 2016 14:45:00 +0100
> David Hunt <david.hunt@intel.com> 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.