static ssize_t sock_ep_atomic_writev(struct fid_ep *ep, const struct fi_ioc *iov, void **desc, size_t count, fi_addr_t dest_addr, uint64_t addr, uint64_t key, enum fi_datatype datatype, enum fi_op op, void *context) { struct fi_msg_atomic msg; struct fi_rma_ioc rma_iov; msg.msg_iov = iov; msg.desc = desc; msg.iov_count = count; msg.addr = dest_addr; rma_iov.addr = addr; rma_iov.key = key; rma_iov.count = count; msg.rma_iov = &rma_iov; msg.rma_iov_count = 1; msg.datatype = datatype; msg.op = op; msg.context = context; msg.data = 0; return sock_ep_atomic_writemsg(ep, &msg, SOCK_USE_OP_FLAGS); }
static ssize_t sock_ep_atomic_inject(struct fid_ep *ep, const void *buf, size_t count, fi_addr_t dest_addr, uint64_t addr, uint64_t key, enum fi_datatype datatype, enum fi_op op) { struct fi_msg_atomic msg; struct fi_ioc msg_iov; struct fi_rma_ioc rma_iov; msg_iov.addr = (void *)buf; msg_iov.count = count; msg.msg_iov = &msg_iov; msg.iov_count = 1; msg.addr = dest_addr; rma_iov.addr = addr; rma_iov.key = key; rma_iov.count = count; msg.rma_iov = &rma_iov; msg.rma_iov_count = 1; msg.datatype = datatype; msg.op = op; msg.data = 0; return sock_ep_atomic_writemsg(ep, &msg, FI_INJECT | SOCK_NO_COMPLETION | SOCK_USE_OP_FLAGS); }
static ssize_t sock_ep_atomic_write(struct fid_ep *ep, const void *buf, size_t count, void *desc, fi_addr_t dest_addr, uint64_t addr, uint64_t key, enum fi_datatype datatype, enum fi_op op, void *context) { struct fi_msg_atomic msg; struct fi_ioc msg_iov; struct fi_rma_ioc rma_iov; msg_iov.addr = (void *)buf; msg_iov.count = count; msg.msg_iov = &msg_iov; msg.desc = &desc; msg.iov_count = 1; msg.addr = dest_addr; rma_iov.addr = addr; rma_iov.key = key; rma_iov.count = count; msg.rma_iov = &rma_iov; msg.rma_iov_count = 1; msg.datatype = datatype; msg.op = op; msg.context = context; msg.data = 0; return sock_ep_atomic_writemsg(ep, &msg, 0); }