Summary of Platform Call discussion The exit call could be wrapped into ODP_ERR possibly so that at compile time other abortive action can be taken global_init could take a call back for absolutely fatal errors that ODP_ERR calls allowing the application to perform some action, it must not allow the app to continue running however
We dont want to ever call exit directly in an implementation - add this to the new coding doc (comment added to do Mike) In this case there was a consensus that this is not a fatal error of the type that should call exit, and that it should return normally setting errno. On 27 August 2014 06:55, Mike Holmes <[email protected]> wrote: > The key thing is to be consistent to the documentations description of the > API I think, currently the odp_buffer_test behaves differently per > platform, and neither are correct to the documentation. > > > On 27 August 2014 05:31, Savolainen, Petri (NSN - FI/Espoo) < > [email protected]> wrote: > >> 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]> wrote: >> >> >> >> On Aug 26, 2014, at 4:25 PM, Mike Holmes <[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, name, >> >> ODP_BUFFER_POOL_NAME_LEN - 1); >> >> pool->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] >> http://lists.linaro.org/mailman/listinfo/lng-odp >> >> >> >> *Keith Wiles*, Principal Technologist with CTO office, *Wind River* mobile >> 972-213-5533 >> >> >> >> >> _______________________________________________ >> lng-odp mailing list >> [email protected] >> http://lists.linaro.org/mailman/listinfo/lng-odp >> >> >> > > > > -- > *Mike Holmes* > Linaro Technical Manager / Lead > LNG - ODP > -- *Mike Holmes* Linaro Technical Manager / Lead LNG - ODP
_______________________________________________ lng-odp mailing list [email protected] http://lists.linaro.org/mailman/listinfo/lng-odp
