Commit 16ef9d02 authored by Emilio G. Cota's avatar Emilio G. Cota Committed by Paolo Bonzini
Browse files

qemu-thread: handle spurious futex_wait wakeups



Signed-off-by: default avatarEmilio G. Cota <cota@braap.org>
Message-Id: <1440375847-17603-12-git-send-email-cota@braap.org>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent 090d0bfd
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -298,7 +298,16 @@ static inline void futex_wake(QemuEvent *ev, int n)

static inline void futex_wait(QemuEvent *ev, unsigned val)
{
    futex(ev, FUTEX_WAIT, (int) val, NULL, NULL, 0);
    while (futex(ev, FUTEX_WAIT, (int) val, NULL, NULL, 0)) {
        switch (errno) {
        case EWOULDBLOCK:
            return;
        case EINTR:
            break; /* get out of switch and retry */
        default:
            abort();
        }
    }
}
#else
static inline void futex_wake(QemuEvent *ev, int n)