enum ia_css_err ia_css_i_host_rmgr_acq_gen(ia_css_resource_type_t resource_type, uint32_t* resource_id) { enum ia_css_err rval = IA_CSS_ERR_INTERNAL_ERROR; assert((resource_type > IA_CSS_RESOURCE_START) && (resource_type < IA_CSS_RESOURCE_END)); switch (resource_type) { case IA_CSS_RESOURCE_SP_THREAD: { return acquire_resource(&g_resource_sp_thread_pool, resource_id); break; } case IA_CSS_RESOURCE_HOST2SP_QUEUE: { return acquire_resource(&g_resource_queue_pool, resource_id); break; } default: { assert(0); /* Resource type not implemented please add it to the list. */ break; } } return rval; }
int main(void) { int rv = 0; int resource = acquire_resource(); if (!valid(resource)) { goto err; } if (!process(resource)) { goto err; } if (0) { err: report_error(); rv = 1; } release_resource(resource); return rv; }