Lines Matching refs:viu
120 closetapdev(struct virtif_user *viu)
123 close(viu->viu_fd);
129 struct virtif_user *viu = aaargh;
137 pfd[0].fd = viu->viu_fd;
139 pfd[1].fd = viu->viu_pipe[0];
142 while (!viu->viu_dying) {
149 viu->viu_devnum, errno);
156 nn = read(viu->viu_fd,
157 viu->viu_rcvbuf, sizeof(viu->viu_rcvbuf));
164 viu->viu_devnum);
168 iov.iov_base = viu->viu_rcvbuf;
172 VIF_DELIVERPKT(viu->viu_virtifsc, &iov, 1);
176 assert(viu->viu_dying);
186 struct virtif_user *viu = NULL;
199 viu = calloc(1, sizeof(*viu));
200 if (viu == NULL) {
204 viu->viu_virtifsc = vif_sc;
206 viu->viu_fd = opentapdev(devnum);
207 if (viu->viu_fd == -1) {
211 viu->viu_devnum = devnum;
213 if (pipe(viu->viu_pipe) == -1) {
218 if ((rv = pthread_create(&viu->viu_rcvthr, NULL, rcvthread, viu)) != 0)
222 *viup = viu;
226 close(viu->viu_pipe[0]);
227 close(viu->viu_pipe[1]);
229 closetapdev(viu);
231 free(viu);
238 VIFHYPER_SEND(struct virtif_user *viu,
254 idontcare = writev(viu->viu_fd, iov, iovlen);
260 VIFHYPER_DYING(struct virtif_user *viu)
264 viu->viu_dying = 1;
265 if (write(viu->viu_pipe[1],
266 &viu->viu_dying, sizeof(viu->viu_dying)) == -1) {
281 VIFHYPER_DESTROY(struct virtif_user *viu)
285 pthread_join(viu->viu_rcvthr, NULL);
286 closetapdev(viu);
287 close(viu->viu_pipe[0]);
288 close(viu->viu_pipe[1]);
289 free(viu);