Maxim, there's no need to do all that since odp_pool_create() handles a
full re-init of the pool structures as part of (re)allocating it for
another create operation.

Actually, having vestigial info about past usage can be valuable for
debugging core dumps.  A pool is unallocated if pool->s.pool_shm ==
ODP_SHM_INVALID and that's the key variable that determines whether the
rest of the items in the struct are active.

Bill

On Tue, Feb 24, 2015 at 7:19 AM, Maxim Uvarov <[email protected]>
wrote:

> On 02/23/2015 11:36 PM, Robbie King wrote:
>
>> +int odp_pool_term_global(void)
>> +{
>> +       int i;
>> +       pool_entry_t *pool;
>> +       int ret = 0;
>> +       int rc = 0;
>> +
>> +       for (i = 0; i < ODP_CONFIG_POOLS; i++) {
>> +               pool = get_pool_entry(i);
>> +
>> +               POOL_LOCK(&pool->s.lock);
>> +               if (pool->s.pool_shm != ODP_SHM_INVALID) {
>> +                       ODP_ERR("Not destroyed pool: %s\n", pool->s.name
>> );
>> +                       rc = -1;
>> +               }
>> +               POOL_UNLOCK(&pool->s.lock);
>> +       }
>>
> what this for does?
> you should do:
> pool->s.name[0] = 0;
> pool->s.flags.has_name = 1;
> unmap(pool->s.pool_base_addr);
>
> Also I would like to zero everything that odp_pool_create() created.
> Including atomic counters.
>
> Thanks,
> Maxim.
>
>  +
>> +       ret = odp_shm_free(odp_shm_lookup(SHM_DEFAULT_NAME));
>> +       if (ret < 0) {
>> +               ODP_ERR("shm free failed for %s", SHM_DEFAULT_NAME);
>> +               rc = -1;
>> +       }
>> +
>> +       return rc;
>> +}
>> +
>>
>
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> http://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
[email protected]
http://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to