On Fri, Dec 16, 2016 at 7:13 AM, Maxim Uvarov <maxim.uva...@linaro.org> wrote:
> On 12/16/16 11:06, Savolainen, Petri (Nokia - FI/Espoo) wrote:
>>>
>>> @@ -172,6 +172,7 @@ static pool_t *reserve_pool(void)
>>>  {
>>>      int i;
>>>      pool_t *pool;
>>> +    char ring_name[ODP_POOL_NAME_LEN];
>>>
>>>      for (i = 0; i < ODP_CONFIG_POOLS; i++) {
>>>              pool = pool_entry(i);
>>> @@ -180,6 +181,17 @@ static pool_t *reserve_pool(void)
>>>              if (pool->reserved == 0) {
>>>                      pool->reserved = 1;
>>>                      UNLOCK(&pool->lock);
>>> +                    sprintf(ring_name, "_odp_pool_ring_%d", i);
>
>
> shm reserve will create /tmp/odp-pid-_odp_pool_ring_%d
>
> which looks like more odp works there. I think name pool_ring_%d is
> better here.

I can certainly change that and will do so in the next rev. I'd like
to get Petri's feedback on the reserve question first, however, so
that this doesn't have to be two revisions.

>
> Maxim.
>
>
>>> +                    pool->ring_shm =
>>> +                            odp_shm_reserve(ring_name,
>>> +                                            sizeof(pool_ring_t),
>>> +                                            ODP_CACHE_LINE_SIZE, 0);
>>> +                    if (pool->ring_shm == ODP_SHM_INVALID) {
>>> +                            ODP_ERR("Unable to alloc pool ring %d\n", i);
>>> +                            pool->reserved = 0;
>>
>> This must be modified inside the lock, otherwise there's a race condition if 
>> a pool is reserved or not.
>>
>> Also, I'd like to have performance impact of the extra indirection verified.
>>
>> -Petri
>>
>

Reply via email to