Ejemplo n.º 1
0
struct vr_message *
vr_message_dequeue_response(void)
{
    struct vr_qelem *elem;

    elem = vr_queue_dequeue(&message_h.vm_response_queue);
    if (elem)
        return CONTAINER_OF(vr_message_queue, struct vr_message, elem);

    return NULL;
}
static void
usock_netlink_write_responses(struct vr_usocket *usockp)
{
    int ret;
    struct vr_message *resp;

    RTE_LOG(DEBUG, USOCK, "%s[%lx]: FD %d\n", __func__, pthread_self(), usockp->usock_fd);
    while ((resp =
                (struct vr_message *)vr_queue_dequeue(&usockp->usock_nl_responses))) {
        usockp->usock_tx_buf = (unsigned char *)dpdk_nl_message_hdr(resp);
        usockp->usock_write_len = dpdk_nl_message_len(resp);
        usockp->usock_write_offset = 0;
        ret = __usock_write(usockp);
        if ((ret < 0) || (ret == usockp->usock_write_len)) {
            vr_message_free(resp);
        } else {
            break;
        }
    }

    return;
}