[dpdk-dev] [dpdk-dev, v5, 2/3] app/test: test external mempool handler

Hunt, David david.hunt at intel.com
Tue May 31 11:17:41 CEST 2016


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 at 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.





More information about the dev mailing list