tools/virtio: Extract virtqueue initialization in vq_reset
So we can reset after that in the main loop. Signed-off-by: Eugenio Pérez <eperezma@redhat.com> Link: https://lore.kernel.org/r/20200418102217.32327-7-eperezma@redhat.com Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
4cfb939353
commit
6741239260
|
@ -94,6 +94,19 @@ void vhost_vq_setup(struct vdev_info *dev, struct vq_info *info)
|
|||
assert(r >= 0);
|
||||
}
|
||||
|
||||
static void vq_reset(struct vq_info *info, int num, struct virtio_device *vdev)
|
||||
{
|
||||
if (info->vq)
|
||||
vring_del_virtqueue(info->vq);
|
||||
|
||||
memset(info->ring, 0, vring_size(num, 4096));
|
||||
vring_init(&info->vring, num, info->ring, 4096);
|
||||
info->vq = __vring_new_virtqueue(info->idx, info->vring, vdev, true,
|
||||
false, vq_notify, vq_callback, "test");
|
||||
assert(info->vq);
|
||||
info->vq->priv = info;
|
||||
}
|
||||
|
||||
static void vq_info_add(struct vdev_info *dev, int num)
|
||||
{
|
||||
struct vq_info *info = &dev->vqs[dev->nvqs];
|
||||
|
@ -103,13 +116,7 @@ static void vq_info_add(struct vdev_info *dev, int num)
|
|||
info->call = eventfd(0, EFD_NONBLOCK);
|
||||
r = posix_memalign(&info->ring, 4096, vring_size(num, 4096));
|
||||
assert(r >= 0);
|
||||
memset(info->ring, 0, vring_size(num, 4096));
|
||||
vring_init(&info->vring, num, info->ring, 4096);
|
||||
info->vq =
|
||||
__vring_new_virtqueue(info->idx, info->vring, &dev->vdev, true,
|
||||
false, vq_notify, vq_callback, "test");
|
||||
assert(info->vq);
|
||||
info->vq->priv = info;
|
||||
vq_reset(info, num, &dev->vdev);
|
||||
vhost_vq_setup(dev, info);
|
||||
dev->fds[info->idx].fd = info->call;
|
||||
dev->fds[info->idx].events = POLLIN;
|
||||
|
|
Loading…
Reference in New Issue