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;
struct QemuLockCnt {
#ifndef CONFIG_LINUX
#ifndef HAVE_FUTEX
QemuMutex mutex;
#endif
unsigned count;

View file

@ -12,10 +12,11 @@
#include "qemu/atomic.h"
#include "trace.h"
#ifdef CONFIG_LINUX
#include "qemu/futex.h"
#ifdef HAVE_FUTEX
/* 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,
* this is not the most relaxing citation I could make...). It is similar
* to mutex2 in the paper.