static void uct_ugni_smsg_progress(void *arg) { uct_ugni_smsg_iface_t *iface = (uct_ugni_smsg_iface_t *)arg; progress_local_cq(iface); progress_remote_cq(iface); /* have a go a processing the pending queue */ ucs_arbiter_dispatch(&iface->super.arbiter, 1, uct_ugni_ep_process_pending, NULL); }
static UCS_CLASS_CLEANUP_FUNC(uct_ugni_smsg_ep_t) { uct_ugni_smsg_iface_t *iface = ucs_derived_of(self->super.super.super.iface, uct_ugni_smsg_iface_t); ucs_status_t status; do { status = iface->super.super.super.ops.ep_flush(&self->super.super.super, 0, NULL); } while(UCS_OK != status); progress_remote_cq(iface); uct_ugni_smsg_mbox_dereg(iface, self->smsg_attr); ucs_mpool_put(self->smsg_attr); }
static void uct_ugni_smsg_progress(void *arg) { uct_ugni_smsg_iface_t *iface = (uct_ugni_smsg_iface_t *)arg; ucs_status_t status; do { status = progress_local_cq(iface); } while(status == UCS_INPROGRESS); do { status = progress_remote_cq(iface); } while(status == UCS_INPROGRESS); /* have a go a processing the pending queue */ ucs_arbiter_dispatch(&iface->super.arbiter, iface->config.smsg_max_credit, uct_ugni_ep_process_pending, NULL); }