[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