qemu-thread: Use futex if available for QemuLockCnt

This unlocks the futex-based implementation of QemuLockCnt to Windows.

Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Link: https://lore.kernel.org/r/20250529-event-v5-6-53b285203794@daynix.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
Akihiko Odaki 2025-05-29 14:45:55 +09:00 committed by Paolo Bonzini
parent 69e10db83e
commit 0a765ca850
2 changed files with 5 additions and 4 deletions

View file

@ -17,7 +17,7 @@
typedef struct QemuLockCnt QemuLockCnt; typedef struct QemuLockCnt QemuLockCnt;
struct QemuLockCnt { struct QemuLockCnt {
#ifndef CONFIG_LINUX #ifndef HAVE_FUTEX
QemuMutex mutex; QemuMutex mutex;
#endif #endif
unsigned count; unsigned count;

View file

@ -12,10 +12,11 @@
#include "qemu/atomic.h" #include "qemu/atomic.h"
#include "trace.h" #include "trace.h"
#ifdef CONFIG_LINUX #ifdef HAVE_FUTEX
#include "qemu/futex.h"
/* On Linux, bits 0-1 are a futex-based lock, bits 2-31 are the counter. /*
* When futex is available, bits 0-1 are a futex-based lock, bits 2-31 are the
* counter.
* For the mutex algorithm see Ulrich Drepper's "Futexes Are Tricky" (ok, * For the mutex algorithm see Ulrich Drepper's "Futexes Are Tricky" (ok,
* this is not the most relaxing citation I could make...). It is similar * this is not the most relaxing citation I could make...). It is similar
* to mutex2 in the paper. * to mutex2 in the paper.