int main(int argc, char **argv) { int op, ret; while ((op = getopt(argc, argv, "d:n:p:s:C:I:o:S:")) != -1) { switch (op) { case 'd': dst_addr = optarg; break; case 'n': domain_hints.name = optarg; break; case 'p': port = optarg; break; case 's': src_addr = optarg; break; case 'I': iterations = atoi(optarg); break; case 'o': if (!strncasecmp("all", optarg, 3)) { run_all_ops = 1; } else { run_all_ops = 0; op_type = get_fi_op(optarg); if (op_type == FI_ATOMIC_OP_LAST) usage(argv[0]); } break; case 'S': if (!strncasecmp("all", optarg, 3)) { size_option = 1; run_all_sizes = 1; } else { run_all_sizes = 0; transfer_size = atoi(optarg); } break; default: usage(argv[0]); return -1; } } hints.domain_attr = &domain_hints; hints.ep_attr = &ep_hints; hints.ep_type = FI_EP_RDM; hints.caps = FI_MSG | FI_ATOMICS | FI_BUFFERED_RECV; hints.mode = FI_CONTEXT | FI_LOCAL_MR | FI_PROV_MR_ATTR; hints.addr_format = FI_FORMAT_UNSPEC; ret = run(); return ret; }
int main(int argc, char **argv) { int op, ret; opts = INIT_OPTS; hints = fi_allocinfo(); if (!hints) return EXIT_FAILURE; while ((op = getopt(argc, argv, "ho:" CS_OPTS INFO_OPTS)) != -1) { switch (op) { case 'o': if (!strncasecmp("all", optarg, 3)) { run_all_ops = 1; } else { run_all_ops = 0; op_type = get_fi_op(optarg); if (op_type == FI_ATOMIC_OP_LAST) { ft_csusage(argv[0], NULL); fprintf(stderr, " -o <op>\tatomic op type: all|min|max|read|write|cswap (default: all)]\n"); return EXIT_FAILURE; } } break; default: ft_parseinfo(op, optarg, hints); ft_parsecsopts(op, optarg, &opts); break; case '?': case 'h': ft_csusage(argv[0], "Ping pong client and server using atomic ops."); fprintf(stderr, " -o <op>\tatomic op type: all|min|max|read|write|cswap (default: all)]\n"); return EXIT_FAILURE; } } if (optind < argc) opts.dst_addr = argv[optind]; hints->ep_attr->type = FI_EP_RDM; hints->caps = FI_MSG | FI_ATOMICS; hints->mode = FI_CONTEXT | FI_LOCAL_MR; ret = run(); fi_freeinfo(hints); fi_freeinfo(fi); return -ret; }