static ssize_t sock_ep_atomic_compwritev(struct fid_ep *ep, const struct fi_ioc *iov, void **desc, size_t count, const struct fi_ioc *comparev, void **compare_desc, size_t compare_count, struct fi_ioc *resultv, void **result_desc, size_t result_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.count = 1; rma_iov.key = key; msg.rma_iov = &rma_iov; msg.rma_iov_count = 1; msg.datatype = datatype; msg.op = op; msg.context = context; return sock_ep_atomic_compwritemsg(ep, &msg, comparev, compare_desc, 1, resultv, result_desc, 1, SOCK_USE_OP_FLAGS); }
static ssize_t sock_ep_atomic_compwrite(struct fid_ep *ep, const void *buf, size_t count, void *desc, const void *compare, void *compare_desc, void *result, void *result_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; struct fi_ioc resultv; struct fi_ioc comparev; 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.count = 1; rma_iov.key = key; msg.rma_iov = &rma_iov; msg.rma_iov_count = 1; msg.datatype = datatype; msg.op = op; msg.context = context; resultv.addr = result; resultv.count = 1; comparev.addr = (void*)compare; comparev.count = 1; return sock_ep_atomic_compwritemsg(ep, &msg, &comparev, &compare_desc, 1, &resultv, &result_desc, 1, SOCK_USE_OP_FLAGS); }