Пример #1
0
static void uct_cm_iface_progress(void *arg)
{
    uct_cm_pending_req_priv_t *priv;
    uct_cm_iface_t *iface = arg;

    uct_cm_enter(iface);
    uct_pending_queue_dispatch(priv, &iface->notify_q,
                               iface->num_outstanding < iface->config.max_outstanding);
    uct_cm_leave(iface);

    ucs_callbackq_remove(&uct_cm_iface_worker(iface)->progress_q,
                         uct_cm_iface_progress, iface);
}
Пример #2
0
unsigned uct_tcp_ep_progress_tx(uct_tcp_ep_t *ep)
{
    uct_pending_req_priv_t *priv;
    unsigned count = 0;

    ucs_trace_func("ep=%p", ep);

    if (ep->length > 0) {
        count += uct_tcp_ep_send(ep);
    }

    uct_pending_queue_dispatch(priv, &ep->pending_q, uct_tcp_ep_can_send(ep));

    if (uct_tcp_ep_can_send(ep)) {
        ucs_assert(ucs_queue_is_empty(&ep->pending_q));
        uct_tcp_ep_mod_events(ep, 0, EPOLLOUT);
    }

    return count;
}
Пример #3
0
static void uct_cm_iface_notify(uct_cm_iface_t *iface)
{
    uct_cm_pending_req_priv_t *priv;
    uct_pending_queue_dispatch(priv, &iface->notify_q,
                               iface->num_outstanding < iface->config.max_outstanding);
}