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; }