static int client_setup(void) { size_t opt_size; int ret; /* Get fabric info */ ret = fi_getinfo(FT_FIVERSION, opts.dst_addr, opts.dst_port, 0, hints, &fi); if (ret) { FT_PRINTERR("fi_getinfo", ret); return ret; } ret = ft_open_fabric_res(); if (ret) return ret; ret = ft_alloc_active_res(fi); if (ret) return ret; ret = ft_init_ep(); if (ret) return ret; /* Get the maximum cm_size for this domain + endpoint combination */ opt_size = sizeof(opt_size); return fi_getopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_CM_DATA_SIZE, &cm_data_size, &opt_size); }
static int server_setup(void) { size_t opt_size; int ret; ret = ft_start_server(); if (ret) return ret; /* Get the maximum cm_size supported in all domains */ opt_size = sizeof(cm_data_size); return fi_getopt(&pep->fid, FI_OPT_ENDPOINT, FI_OPT_CM_DATA_SIZE, &cm_data_size, &opt_size); }
static int client_open_new_ep() { size_t opt_size; int ret; FT_CLOSE_FID(ep); ret = fi_endpoint(domain, fi, &ep, NULL); if (ret) { FT_PRINTERR("fi_endpoint", ret); return ret; } ret = ft_enable_ep_recv(); if (ret) return ret; /* Get the maximum cm_size for this domain + endpoint combination */ opt_size = sizeof(opt_size); return fi_getopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_CM_DATA_SIZE, &cm_data_size, &opt_size); }
Test(endpoint, getsetopt) { int ret; struct fid_ep *ep = NULL; uint64_t val; size_t len; ret = fi_endpoint(dom, fi, &ep, NULL); cr_assert(!ret, "fi_endpoint"); /* Test bad params. */ ret = fi_getopt(&ep->fid, !FI_OPT_ENDPOINT, FI_OPT_MIN_MULTI_RECV, (void *)&val, &len); cr_assert(ret == -FI_ENOPROTOOPT, "fi_getopt"); ret = fi_getopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_CM_DATA_SIZE+1, (void *)&val, &len); cr_assert(ret == -FI_ENOPROTOOPT, "fi_getopt"); ret = fi_getopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_MIN_MULTI_RECV, NULL, &len); cr_assert(ret == -FI_EINVAL, "fi_getopt"); ret = fi_getopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_MIN_MULTI_RECV, (void *)&val, NULL); cr_assert(ret == -FI_EINVAL, "fi_getopt"); ret = fi_setopt(&ep->fid, !FI_OPT_ENDPOINT, FI_OPT_MIN_MULTI_RECV, (void *)&val, sizeof(size_t)); cr_assert(ret == -FI_ENOPROTOOPT, "fi_setopt"); ret = fi_setopt(&ep->fid, FI_OPT_ENDPOINT, !FI_OPT_MIN_MULTI_RECV, (void *)&val, sizeof(size_t)); cr_assert(ret == -FI_ENOPROTOOPT, "fi_setopt"); ret = fi_setopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_MIN_MULTI_RECV, NULL, sizeof(size_t)); cr_assert(ret == -FI_EINVAL, "fi_setopt"); ret = fi_setopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_MIN_MULTI_RECV, (void *)&val, sizeof(size_t) - 1); cr_assert(ret == -FI_EINVAL, "fi_setopt"); /* Test update. */ ret = fi_getopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_MIN_MULTI_RECV, (void *)&val, &len); cr_assert(!ret, "fi_getopt"); cr_assert(val == GNIX_OPT_MIN_MULTI_RECV_DEFAULT, "fi_getopt"); cr_assert(len == sizeof(size_t), "fi_getopt"); ret = fi_getopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_CM_DATA_SIZE, (void *)&val, &len); cr_assert(!ret, "fi_getopt"); cr_assert(val == GNIX_CM_DATA_MAX_SIZE, "fi_getopt"); cr_assert(len == sizeof(size_t), "fi_getopt"); val = 128; ret = fi_setopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_MIN_MULTI_RECV, (void *)&val, sizeof(size_t)); cr_assert(!ret, "fi_setopt"); ret = fi_getopt(&ep->fid, FI_OPT_ENDPOINT, FI_OPT_MIN_MULTI_RECV, (void *)&val, &len); cr_assert(!ret, "fi_getopt"); cr_assert(val == 128, "fi_getopt"); cr_assert(len == sizeof(size_t), "fi_getopt"); ret = fi_close(&ep->fid); cr_assert(!ret, "fi_close endpoint"); }