virtio-device-model(位于QEMU内部)使用vhost-user协议配置vhost-user库,以及设置irqfd和ioeventfd文件描述符。 客户机分配的virtio内存区域由vhost用户库(即DPDK应用程序)映射(使用mmap 系统调用)。 结果是,DPDK应用程序可以直接在客户机内存中读取和写入数据包,并使用irqfd和ioeventfd机制直接对客户机发出通知。 rte_vho...
vhost-user端,在vhost_user_set_vring_kick中,关键的一句vq->kickfd = file.fd; vhost_user_set_vring_call(structvirtio_net **pdev,structVhostUserMsg *msg,intmain_fd __rte_unused) {structvirtio_net *dev = *pdev;structvhost_vring_file file;structvhost_virtqueue *vq;intexpected_fds; expected_...
*/ typedef uint16_t (*dequeue_pkt_burst_t)(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops); /**< Dequeue processed packets from queue pair of a device. */ typedef uint16_t (*enqueue_pkt_burst_t)(void *qp, struct rte_crypto_op **ops, uint16_t nb_ops);...
*/ event_dequeue_burst_t dequeue_burst; /**< PMD dequeue burst function. */ event_maintain_t maintain; /**< PMD port maintenance function. */ event_tx_adapter_enqueue_t txa_enqueue; /**< PMD Tx adapter enqueue function. */ event_tx_adapter_enqueue_t txa_enqueue_same_dest...
151 /* Burst dequeue from rx_q */ 152 num_rx = kni_fifo_get(kni->rx_q, (void **)va, num_rx); 153 if (num_rx == 0) 154 return; 155 156 /* Transfer received packets to netif */ 157 for (i = 0; i < num_rx; i++) { ...