/* * Unmap any memory, close any file descriptors and * free any memory owned by a device. */ static void cleanup_device(struct virtio_net *dev, int destroy) { uint32_t i; vhost_backend_cleanup(dev); for (i = 0; i < dev->virt_qp_nb; i++) { cleanup_vq(dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ], destroy); cleanup_vq(dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_TXQ], destroy); } }
/* * Unmap any memory, close any file descriptors and * free any memory owned by a device. */ static void cleanup_device(struct virtio_net *dev) { uint32_t i; /* Unmap QEMU memory file if mapped. */ if (dev->mem) { munmap((void *)(uintptr_t)dev->mem->mapped_address, (size_t)dev->mem->mapped_size); free(dev->mem); } for (i = 0; i < dev->virt_qp_nb; i++) { cleanup_vq(dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_RXQ]); cleanup_vq(dev->virtqueue[i * VIRTIO_QNUM + VIRTIO_TXQ]); } }
/* * Unmap any memory, close any file descriptors and * free any memory owned by a device. */ void cleanup_device(struct virtio_net *dev, int destroy) { uint32_t i; vhost_backend_cleanup(dev); for (i = 0; i < dev->nr_vring; i++) cleanup_vq(dev->virtqueue[i], destroy); }