struct fi_info_1_1 *fi_dupinfo_1_1(const struct fi_info_1_1 *info) { struct fi_info *dup, *base; if (!info) return (struct fi_info_1_1 *) ofi_allocinfo_internal(); ofi_dup_attr(base, info); if (base == NULL) return NULL; dup = fi_dupinfo(base); free(base); return (struct fi_info_1_1 *) dup; }
struct fi_info *DEFAULT_SYMVER_PRE(fi_dupinfo)(const struct fi_info *info) { struct fi_info *dup; if (!info) return ofi_allocinfo_internal(); dup = mem_dup(info, sizeof(*dup)); if (dup == NULL) { return NULL; } dup->src_addr = NULL; dup->dest_addr = NULL; dup->tx_attr = NULL; dup->rx_attr = NULL; dup->ep_attr = NULL; dup->domain_attr = NULL; dup->fabric_attr = NULL; dup->next = NULL; if (info->src_addr != NULL) { dup->src_addr = mem_dup(info->src_addr, info->src_addrlen); if (dup->src_addr == NULL) goto fail; } if (info->dest_addr != NULL) { dup->dest_addr = mem_dup(info->dest_addr, info->dest_addrlen); if (dup->dest_addr == NULL) goto fail; } if (info->tx_attr != NULL) { dup->tx_attr = mem_dup(info->tx_attr, sizeof(*info->tx_attr)); if (dup->tx_attr == NULL) goto fail; } if (info->rx_attr != NULL) { dup->rx_attr = mem_dup(info->rx_attr, sizeof(*info->rx_attr)); if (dup->rx_attr == NULL) goto fail; } if (info->ep_attr != NULL) { dup->ep_attr = mem_dup(info->ep_attr, sizeof(*info->ep_attr)); if (dup->ep_attr == NULL) goto fail; } if (info->domain_attr) { dup->domain_attr = mem_dup(info->domain_attr, sizeof(*info->domain_attr)); if (dup->domain_attr == NULL) goto fail; if (info->domain_attr->name != NULL) { dup->domain_attr->name = strdup(info->domain_attr->name); if (dup->domain_attr->name == NULL) goto fail; } } if (info->fabric_attr) { dup->fabric_attr = mem_dup(info->fabric_attr, sizeof(*info->fabric_attr)); if (dup->fabric_attr == NULL) goto fail; dup->fabric_attr->name = NULL; dup->fabric_attr->prov_name = NULL; if (info->fabric_attr->name != NULL) { dup->fabric_attr->name = strdup(info->fabric_attr->name); if (dup->fabric_attr->name == NULL) goto fail; } if (info->fabric_attr->prov_name != NULL) { dup->fabric_attr->prov_name = strdup(info->fabric_attr->prov_name); if (dup->fabric_attr->prov_name == NULL) goto fail; } } return dup; fail: fi_freeinfo(dup); return NULL; }
struct fi_info_1_0 *fi_dupinfo_1_0(const struct fi_info_1_0 *info) { struct fi_info *dup; if (!info) return (struct fi_info_1_0 *) ofi_allocinfo_internal(); ofi_dup_attr(dup, info); if (dup == NULL) { return NULL; } dup->src_addr = NULL; dup->dest_addr = NULL; dup->tx_attr = NULL; dup->rx_attr = NULL; dup->ep_attr = NULL; dup->domain_attr = NULL; dup->fabric_attr = NULL; dup->next = NULL; if (info->src_addr != NULL) { dup->src_addr = mem_dup(info->src_addr, info->src_addrlen); if (dup->src_addr == NULL) goto fail; } if (info->dest_addr != NULL) { dup->dest_addr = mem_dup(info->dest_addr, info->dest_addrlen); if (dup->dest_addr == NULL) goto fail; } if (info->tx_attr != NULL) { ofi_dup_attr(dup->tx_attr, info->tx_attr); if (dup->tx_attr == NULL) goto fail; } if (info->rx_attr != NULL) { ofi_dup_attr(dup->rx_attr, info->rx_attr); if (dup->rx_attr == NULL) goto fail; } if (info->ep_attr != NULL) { ofi_dup_attr(dup->ep_attr, info->ep_attr); if (dup->ep_attr == NULL) goto fail; } if (info->domain_attr) { ofi_dup_attr(dup->domain_attr, info->domain_attr); if (dup->domain_attr == NULL) goto fail; if (info->domain_attr->name != NULL) { dup->domain_attr->name = strdup(info->domain_attr->name); if (dup->domain_attr->name == NULL) goto fail; } } if (info->fabric_attr) { ofi_dup_attr(dup->fabric_attr, info->fabric_attr); if (dup->fabric_attr == NULL) goto fail; dup->fabric_attr->name = NULL; dup->fabric_attr->prov_name = NULL; if (info->fabric_attr->name != NULL) { dup->fabric_attr->name = strdup(info->fabric_attr->name); if (dup->fabric_attr->name == NULL) goto fail; } if (info->fabric_attr->prov_name != NULL) { dup->fabric_attr->prov_name = strdup(info->fabric_attr->prov_name); if (dup->fabric_attr->prov_name == NULL) goto fail; } } return (struct fi_info_1_0 *) dup; fail: fi_freeinfo(dup); return NULL; }