int ipa_rm_delete_resource(enum ipa_rm_resource_name resource_name) { struct ipa_rm_resource *resource; int result; IPADBG("IPA RM ::ipa_rm_delete_resource num[%d] ENTER\n", resource_name); write_lock(&ipa_rm_ctx->lock); if (ipa_rm_dep_graph_get_resource(ipa_rm_ctx->dep_graph, resource_name, &resource) != 0) { IPADBG("ipa_rm_delete_resource param are bad********\n"); result = -EINVAL; goto bail; } result = ipa_rm_resource_delete(resource); if (result) { IPADBG("error in ipa_rm_resource_delete\n"); goto bail; } result = ipa_rm_dep_graph_remove(ipa_rm_ctx->dep_graph, resource_name); IPADBG("IPA RM ::ipa_rm_delete_resource [%d] SUCCESS\n", resource_name); bail: write_unlock(&ipa_rm_ctx->lock); return result; }
int ipa_rm_create_resource(struct ipa_rm_create_params *create_params) { struct ipa_rm_resource *resource; int result; if (!create_params) return -EINVAL; write_lock(&ipa_rm_ctx->lock); if (ipa_rm_dep_graph_get_resource(ipa_rm_ctx->dep_graph, create_params->name, &resource) == 0) { result = -EEXIST; goto bail; } result = ipa_rm_resource_create(create_params, &resource); if (result) goto bail; result = ipa_rm_dep_graph_add(ipa_rm_ctx->dep_graph, resource); if (result) ipa_rm_resource_delete(resource); bail: write_unlock(&ipa_rm_ctx->lock); return result; }
/** * ipa_rm_delete_resource() - delete resource * @resource_name: name of resource to be deleted * * Returns: 0 on success, negative on failure * * This function is called by IPA RM client to delete client's resources. * */ int ipa_rm_delete_resource(enum ipa_rm_resource_name resource_name) { struct ipa_rm_resource *resource; int result; IPA_RM_DBG("%s\n", ipa_rm_resource_str(resource_name)); write_lock(&ipa_rm_ctx->lock); if (ipa_rm_dep_graph_get_resource(ipa_rm_ctx->dep_graph, resource_name, &resource) != 0) { IPA_RM_ERR("resource does not exist\n"); result = -EINVAL; goto bail; } result = ipa_rm_resource_delete(resource); if (result) { IPA_RM_ERR("ipa_rm_resource_delete() failed\n"); goto bail; } result = ipa_rm_dep_graph_remove(ipa_rm_ctx->dep_graph, resource_name); if (result) { IPA_RM_ERR("ipa_rm_dep_graph_remove() failed\n"); goto bail; } bail: write_unlock(&ipa_rm_ctx->lock); IPA_RM_DBG("EXIT with %d\n", result); return result; }
/** * ipa_rm_create_resource() - create resource * @create_params: [in] parameters needed * for resource initialization * * Returns: 0 on success, negative on failure * * This function is called by IPA RM client to initialize client's resources. * This API should be called before any other IPA RM API * on given resource name. * */ int ipa_rm_create_resource(struct ipa_rm_create_params *create_params) { struct ipa_rm_resource *resource; int result; if (!create_params) { IPA_RM_ERR("invalid args\n"); return -EINVAL; } IPA_RM_DBG("%s\n", ipa_rm_resource_str(create_params->name)); write_lock(&ipa_rm_ctx->lock); if (ipa_rm_dep_graph_get_resource(ipa_rm_ctx->dep_graph, create_params->name, &resource) == 0) { IPA_RM_ERR("resource already exists\n"); result = -EEXIST; goto bail; } result = ipa_rm_resource_create(create_params, &resource); if (result) { IPA_RM_ERR("ipa_rm_resource_create() failed\n"); goto bail; } result = ipa_rm_dep_graph_add(ipa_rm_ctx->dep_graph, resource); if (result) { IPA_RM_ERR("ipa_rm_dep_graph_add() failed\n"); ipa_rm_resource_delete(resource); goto bail; } bail: write_unlock(&ipa_rm_ctx->lock); IPA_RM_DBG("EXIT with %d\n", result); return result; }