Lines Matching refs:info
55 struct vq_info *info = vq->priv; in vq_notify() local
58 r = write(info->kick, &v, sizeof v); in vq_notify()
68 void vhost_vq_setup(struct vdev_info *dev, struct vq_info *info) in vhost_vq_setup() argument
70 struct vhost_vring_state state = { .index = info->idx }; in vhost_vq_setup()
71 struct vhost_vring_file file = { .index = info->idx }; in vhost_vq_setup()
74 .index = info->idx, in vhost_vq_setup()
75 .desc_user_addr = (uint64_t)(unsigned long)info->vring.desc, in vhost_vq_setup()
76 .avail_user_addr = (uint64_t)(unsigned long)info->vring.avail, in vhost_vq_setup()
77 .used_user_addr = (uint64_t)(unsigned long)info->vring.used, in vhost_vq_setup()
82 state.num = info->vring.num; in vhost_vq_setup()
90 file.fd = info->kick; in vhost_vq_setup()
93 file.fd = info->call; in vhost_vq_setup()
98 static void vq_reset(struct vq_info *info, int num, struct virtio_device *vdev) in vq_reset() argument
100 if (info->vq) in vq_reset()
101 vring_del_virtqueue(info->vq); in vq_reset()
103 memset(info->ring, 0, vring_size(num, 4096)); in vq_reset()
104 vring_init(&info->vring, num, info->ring, 4096); in vq_reset()
105 info->vq = vring_new_virtqueue(info->idx, num, 4096, vdev, true, false, in vq_reset()
106 info->ring, vq_notify, vq_callback, "test"); in vq_reset()
107 assert(info->vq); in vq_reset()
108 info->vq->priv = info; in vq_reset()
113 struct vq_info *info = &dev->vqs[dev->nvqs]; in vq_info_add() local
115 info->idx = dev->nvqs; in vq_info_add()
116 info->kick = eventfd(0, EFD_NONBLOCK); in vq_info_add()
117 info->call = eventfd(0, EFD_NONBLOCK); in vq_info_add()
118 r = posix_memalign(&info->ring, 4096, vring_size(num, 4096)); in vq_info_add()
120 vq_reset(info, num, &dev->vdev); in vq_info_add()
121 vhost_vq_setup(dev, info); in vq_info_add()
122 dev->fds[info->idx].fd = info->call; in vq_info_add()
123 dev->fds[info->idx].events = POLLIN; in vq_info_add()