Commit bb6834cfae238e342da966557d7d24423efe18ab
1 parent
d34ca590
Fix windows build after virtio changes
Windows does not have sys/uio.h and does not have err.h. Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5877 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
34 additions
and
15 deletions
hw/virtio.c
... | ... | @@ -12,7 +12,6 @@ |
12 | 12 | */ |
13 | 13 | |
14 | 14 | #include <inttypes.h> |
15 | -#include <err.h> | |
16 | 15 | |
17 | 16 | #include "virtio.h" |
18 | 17 | #include "sysemu.h" |
... | ... | @@ -331,9 +330,11 @@ static int virtqueue_num_heads(VirtQueue *vq, unsigned int idx) |
331 | 330 | uint16_t num_heads = vring_avail_idx(vq) - idx; |
332 | 331 | |
333 | 332 | /* Check it isn't doing very strange things with descriptor numbers. */ |
334 | - if (num_heads > vq->vring.num) | |
335 | - errx(1, "Guest moved used index from %u to %u", | |
336 | - idx, vring_avail_idx(vq)); | |
333 | + if (num_heads > vq->vring.num) { | |
334 | + fprintf(stderr, "Guest moved used index from %u to %u", | |
335 | + idx, vring_avail_idx(vq)); | |
336 | + exit(1); | |
337 | + } | |
337 | 338 | |
338 | 339 | return num_heads; |
339 | 340 | } |
... | ... | @@ -347,8 +348,10 @@ static unsigned int virtqueue_get_head(VirtQueue *vq, unsigned int idx) |
347 | 348 | head = vring_avail_ring(vq, idx % vq->vring.num); |
348 | 349 | |
349 | 350 | /* If their number is silly, that's a fatal mistake. */ |
350 | - if (head >= vq->vring.num) | |
351 | - errx(1, "Guest says index %u is available", head); | |
351 | + if (head >= vq->vring.num) { | |
352 | + fprintf(stderr, "Guest says index %u is available", head); | |
353 | + exit(1); | |
354 | + } | |
352 | 355 | |
353 | 356 | return head; |
354 | 357 | } |
... | ... | @@ -366,8 +369,10 @@ static unsigned virtqueue_next_desc(VirtQueue *vq, unsigned int i) |
366 | 369 | /* Make sure compiler knows to grab that: we don't want it changing! */ |
367 | 370 | wmb(); |
368 | 371 | |
369 | - if (next >= vq->vring.num) | |
370 | - errx(1, "Desc next is %u", next); | |
372 | + if (next >= vq->vring.num) { | |
373 | + fprintf(stderr, "Desc next is %u", next); | |
374 | + exit(1); | |
375 | + } | |
371 | 376 | |
372 | 377 | return next; |
373 | 378 | } |
... | ... | @@ -386,8 +391,10 @@ int virtqueue_avail_bytes(VirtQueue *vq, int in_bytes, int out_bytes) |
386 | 391 | i = virtqueue_get_head(vq, idx++); |
387 | 392 | do { |
388 | 393 | /* If we've got too many, that implies a descriptor loop. */ |
389 | - if (++num_bufs > vq->vring.num) | |
390 | - errx(1, "Looped descriptor"); | |
394 | + if (++num_bufs > vq->vring.num) { | |
395 | + fprintf(stderr, "Looped descriptor"); | |
396 | + exit(1); | |
397 | + } | |
391 | 398 | |
392 | 399 | if (vring_desc_flags(vq, i) & VRING_DESC_F_WRITE) { |
393 | 400 | if (in_bytes > 0 && |
... | ... | @@ -447,12 +454,16 @@ int virtqueue_pop(VirtQueue *vq, VirtQueueElement *elem) |
447 | 454 | sg->iov_len); |
448 | 455 | } |
449 | 456 | #endif |
450 | - if (sg->iov_base == NULL) | |
451 | - errx(1, "Invalid mapping\n"); | |
457 | + if (sg->iov_base == NULL) { | |
458 | + fprintf(stderr, "Invalid mapping\n"); | |
459 | + exit(1); | |
460 | + } | |
452 | 461 | |
453 | 462 | /* If we've got too many, that implies a descriptor loop. */ |
454 | - if ((elem->in_num + elem->out_num) > vq->vring.num) | |
455 | - errx(1, "Looped descriptor"); | |
463 | + if ((elem->in_num + elem->out_num) > vq->vring.num) { | |
464 | + fprintf(stderr, "Looped descriptor"); | |
465 | + exit(1); | |
466 | + } | |
456 | 467 | } while ((i = virtqueue_next_desc(vq, i)) != vq->vring.num); |
457 | 468 | |
458 | 469 | elem->index = head; | ... | ... |
hw/virtio.h
... | ... | @@ -14,10 +14,18 @@ |
14 | 14 | #ifndef _QEMU_VIRTIO_H |
15 | 15 | #define _QEMU_VIRTIO_H |
16 | 16 | |
17 | -#include <sys/uio.h> | |
18 | 17 | #include "hw.h" |
19 | 18 | #include "pci.h" |
20 | 19 | |
20 | +#ifdef _WIN32 | |
21 | +struct iovec { | |
22 | + void *iov_base; | |
23 | + size_t iov_len; | |
24 | +}; | |
25 | +#else | |
26 | +#include <sys/uio.h> | |
27 | +#endif | |
28 | + | |
21 | 29 | /* from Linux's linux/virtio_config.h */ |
22 | 30 | |
23 | 31 | /* Status byte for guest to report progress, and synchronize features. */ | ... | ... |