static int ucp_is_resource_enabled(uct_tl_resource_desc_t *resource, const ucp_config_t *config, uint64_t *masks) { int device_enabled, tl_enabled; ucp_tl_alias_t *alias; /* Find the enabled devices */ device_enabled = ucp_is_resource_in_device_list(resource, config->devices, masks, resource->dev_type); /* Find the enabled UCTs */ ucs_assert(config->tls.count > 0); if (ucp_config_is_tl_enabled(config, resource->tl_name, 0)) { tl_enabled = 1; } else { tl_enabled = 0; /* check aliases */ for (alias = ucp_tl_aliases; alias->alias != NULL; ++alias) { /* If an alias is enabled, and the transport is part of this alias, * enable the transport. */ if (ucp_config_is_tl_enabled(config, alias->alias, 1) && (ucp_str_array_search(alias->tls, ucp_tl_alias_count(alias), resource->tl_name) >= 0)) { tl_enabled = 1; ucs_trace("enabling tl '%s' for alias '%s'", resource->tl_name, alias->alias); break; } } } ucs_trace(UCT_TL_RESOURCE_DESC_FMT " is %sabled", UCT_TL_RESOURCE_DESC_ARG(resource), (device_enabled && tl_enabled) ? "en" : "dis"); return device_enabled && tl_enabled; }
static int ucp_is_resource_enabled(uct_tl_resource_desc_t *resource, const ucp_config_t *config, uint64_t *devices_mask_p) { int device_enabled, tl_enabled; ucp_tl_alias_t *alias; int config_idx; ucs_assert(config->devices.count > 0); if (!strcmp(config->devices.names[0], "all")) { /* if the user's list is 'all', use all the available resources */ device_enabled = 1; *devices_mask_p = 1; } else { /* go over the device list from the user and check (against the available resources) * which can be satisfied */ device_enabled = 0; *devices_mask_p = 0; ucs_assert_always(config->devices.count <= 64); /* Using uint64_t bitmap */ config_idx = ucp_str_array_search((const char**)config->devices.names, config->devices.count, resource->dev_name); if (config_idx >= 0) { device_enabled = 1; *devices_mask_p |= UCS_MASK(config_idx); } } /* Disable the posix mmap and xpmem 'devices'. ONLY for now - use sysv for mm . * This will be removed after multi-rail is supported */ if (!strcmp(resource->dev_name,"posix") || !strcmp(resource->dev_name, "xpmem")) { device_enabled = 0; } ucs_assert(config->tls.count > 0); if (ucp_config_is_tl_enabled(config, resource->tl_name)) { tl_enabled = 1; } else { tl_enabled = 0; /* check aliases */ for (alias = ucp_tl_aliases; alias->alias != NULL; ++alias) { /* If an alias is enabled, and the transport is part of this alias, * enable the transport. */ if (ucp_config_is_tl_enabled(config, alias->alias) && (ucp_str_array_search(alias->tls, ucp_tl_alias_count(alias), resource->tl_name) >= 0)) { tl_enabled = 1; ucs_trace("enabling tl '%s' for alias '%s'", resource->tl_name, alias->alias); break; } } } ucs_trace(UCT_TL_RESOURCE_DESC_FMT " is %sabled", UCT_TL_RESOURCE_DESC_ARG(resource), (device_enabled && tl_enabled) ? "en" : "dis"); return device_enabled && tl_enabled; }