From 652ce2d449f47cdc4d94eb67f2377504c06957ad Mon Sep 17 00:00:00 2001 From: Paolo Bonzini Date: Tue, 2 Feb 2010 20:33:10 +0100 Subject: [PATCH] loop write in qemu_event_increment upon EINTR Same as what qemu-kvm does. Signed-off-by: Paolo Bonzini Signed-off-by: Anthony Liguori --- vl.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vl.c b/vl.c index f98661f34e..29f218987a 100644 --- a/vl.c +++ b/vl.c @@ -3217,8 +3217,12 @@ static void qemu_event_increment(void) if (io_thread_fd == -1) return; - ret = write(io_thread_fd, &byte, sizeof(byte)); - if (ret < 0 && (errno != EINTR && errno != EAGAIN)) { + do { + ret = write(io_thread_fd, &byte, sizeof(byte)); + } while (ret < 0 && errno == EINTR); + + /* EAGAIN is fine, a read must be pending. */ + if (ret < 0 && errno != EAGAIN) { fprintf(stderr, "qemu_event_increment: write() filed: %s\n", strerror(errno)); exit (1);