Hi,

Some exit()s are caused by internal errors (which cannot be recovered from), so 
it might be better idea to crash right there rather than return an error code.

-Petri


From: ext Bill Fischofer [mailto:[email protected]]
Sent: Wednesday, August 27, 2014 4:08 AM
To: Wiles, Roger Keith
Cc: Mike Holmes; Savolainen, Petri (NSN - FI/Espoo); lng-odp
Subject: Re: [lng-odp] RFC odp_buffer_pool_create has no return code it calls 
exit(0)

Many of the linux-generic routines that were written early in the project took 
various shortcuts in this area.  They need to be standardized as part of the 
ODP v1.0 cleanup/packaging/validation/documentation effort post-LCU.  We should 
start compiling a list of these and get BPs created for these now and at LCU.

ODP routines, should not call exit() or similar global "give up" routines but 
should provide appropriate error returns in the case of most problems.  In the 
specific case of odp_buffer_pool_create(), it should never abort.  The 
parameter list also does not reflect the current design so that too will need 
to be harmonized.

Bill

On Tue, Aug 26, 2014 at 7:30 PM, Wiles, Roger Keith 
<[email protected]<mailto:[email protected]>> wrote:

On Aug 26, 2014, at 4:25 PM, Mike Holmes 
<[email protected]<mailto:[email protected]>> wrote:


The  odp_buffer_pool_create  function has a return code that defaults to  
ODP_BUFFER_POOL_INVALID, although the API header file doxygen comment does not 
indicate that there is any error return code possible.
I was going to add that information however there truly is no error returned 
because link_bufs actually calls exit(0) on error.

My question is do we update odp_buffer_pool_create docs to say this function 
may never return, or should link_bufs be rewritten ?

I would normally say we need to remove the exit(0)  but presumably this was 
done as as an optimization ?  In which case we just need to document it 
properly ?

Thoughts ?


odp_buffer_pool_t odp_buffer_pool_create(const char *name,
                                         void *base_addr, uint64_t size,
                                         size_t buf_size, size_t buf_align,
                                         int buf_type)
{
        odp_buffer_pool_t i;
        pool_entry_t *pool;
        odp_buffer_pool_t pool_id = ODP_BUFFER_POOL_INVALID;

        for (i = 0; i < ODP_CONFIG_BUFFER_POOLS; i++) {
                pool = get_pool_entry(i);

                LOCK(&pool->s.lock);

                if (pool->s.buf_base == 0) {
                        /* found free pool */

                        strncpy(pool->s.name<http://s.name/>, name,
                                ODP_BUFFER_POOL_NAME_LEN - 1);
                        pool->s.name<http://s.name/>[ODP_BUFFER_POOL_NAME_LEN - 
1] = 0;
                        pool->s.pool_base_addr = base_addr;
                        pool->s.pool_size      = size;
                        pool->s.user_size      = buf_size;
                        pool->s.user_align     = buf_align;
                        pool->s.buf_type       = buf_type;

                        link_bufs(pool); NEVER returns on some errors

I would want this function to not do an exit() call without allowing the 
application to caught the error. It would mean the link_bufs() routine would 
need to return and error/error code instead of exiting. Having something exit 
is not a very friendly action IMO.


                        UNLOCK(&pool->s.lock);

                        pool_id = i;
                        break;
                }

                UNLOCK(&pool->s.lock);
        }

        return pool_id;
}



--
Mike Holmes
Linaro Technical Manager / Lead
LNG - ODP
_______________________________________________
lng-odp mailing list
[email protected]<mailto:[email protected]>
http://lists.linaro.org/mailman/listinfo/lng-odp

Keith Wiles, Principal Technologist with CTO office, Wind River mobile 
972-213-5533<tel:972-213-5533>


_______________________________________________
lng-odp mailing list
[email protected]<mailto:[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