int efrm_resources_init(void) { int i, rc; /* Create resources in the correct order */ for (i = 0; i < EFRM_RESOURCE_NUM; ++i) { struct efrm_resource_manager **rmp = &efrm_rm_table[i]; EFRM_ASSERT(*rmp == NULL); switch (i) { case EFRM_RESOURCE_VI: rc = efrm_create_vi_resource_manager(rmp); break; case EFRM_RESOURCE_VI_SET: rc = efrm_create_vi_set_resource_manager(rmp); break; #ifdef CONFIG_SFC_RESOURCE_VF case EFRM_RESOURCE_VF: rc = efrm_create_vf_resource_manager(rmp); break; #endif case EFRM_RESOURCE_PD: rc = efrm_create_pd_resource_manager(rmp); break; case EFRM_RESOURCE_PIO: rc = efrm_create_pio_resource_manager(rmp); break; default: rc = 0; break; } if (rc < 0) { EFRM_ERR("%s: failed type=%d (%d)", __FUNCTION__, i, rc); return rc; } } return 0; }
int efrm_resources_init(const struct vi_resource_dimensions *vi_res_dim, int buffer_table_min, int buffer_table_lim) { int i, rc; rc = efrm_buffer_table_ctor(buffer_table_min, buffer_table_lim); if (rc != 0) return rc; /* Create resources in the correct order */ for (i = 0; i < EFRM_RESOURCE_NUM; ++i) { struct efrm_resource_manager **rmp = &efrm_rm_table[i]; EFRM_ASSERT(*rmp == NULL); switch (i) { case EFRM_RESOURCE_VI: rc = efrm_create_vi_resource_manager(rmp, vi_res_dim); break; case EFRM_RESOURCE_FILTER: rc = efrm_create_filter_resource_manager(rmp); break; case EFRM_RESOURCE_IOBUFSET: rc = efrm_create_iobufset_resource_manager(rmp); break; default: rc = 0; break; } if (rc < 0) { EFRM_ERR("%s: failed type=%d (%d)", __FUNCTION__, i, rc); efrm_buffer_table_dtor(); return rc; } } return 0; }