summaryrefslogtreecommitdiffstats
path: root/linux-user
diff options
context:
space:
mode:
authorRichard Henderson2022-08-29 04:10:03 +0200
committerLaurent Vivier2022-09-27 13:19:05 +0200
commitc72a90df47b990572ac4fdb7e918005466446db9 (patch)
treee22c083d8e28d402ff06854be9b6e260c77a9419 /linux-user
parentlinux-user: Convert signal number for FUTEX_FD (diff)
downloadqemu-c72a90df47b990572ac4fdb7e918005466446db9.tar.gz
qemu-c72a90df47b990572ac4fdb7e918005466446db9.tar.xz
qemu-c72a90df47b990572ac4fdb7e918005466446db9.zip
linux-user: Implement PI futexes
Define the missing FUTEX_* constants in syscall_defs.h Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Laurent Vivier <laurent@vivier.eu> Message-Id: <20220829021006.67305-6-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'linux-user')
-rw-r--r--linux-user/syscall.c10
-rw-r--r--linux-user/syscall_defs.h3
2 files changed, 13 insertions, 0 deletions
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 3f144e3c1f..2e954d8dbd 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -7788,8 +7788,17 @@ static int do_futex(CPUState *cpu, bool time64, target_ulong uaddr,
case FUTEX_WAIT_BITSET:
val = tswap32(val);
break;
+ case FUTEX_WAIT_REQUEUE_PI:
+ val = tswap32(val);
+ haddr2 = g2h(cpu, uaddr2);
+ break;
+ case FUTEX_LOCK_PI:
+ case FUTEX_LOCK_PI2:
+ break;
case FUTEX_WAKE:
case FUTEX_WAKE_BITSET:
+ case FUTEX_TRYLOCK_PI:
+ case FUTEX_UNLOCK_PI:
timeout = 0;
break;
case FUTEX_FD:
@@ -7797,6 +7806,7 @@ static int do_futex(CPUState *cpu, bool time64, target_ulong uaddr,
timeout = 0;
break;
case FUTEX_CMP_REQUEUE:
+ case FUTEX_CMP_REQUEUE_PI:
val3 = tswap32(val3);
/* fall through */
case FUTEX_REQUEUE:
diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h
index 1e3577bfa5..01ee10a88f 100644
--- a/linux-user/syscall_defs.h
+++ b/linux-user/syscall_defs.h
@@ -2699,6 +2699,9 @@ struct target_drm_i915_getparam {
#define FUTEX_TRYLOCK_PI 8
#define FUTEX_WAIT_BITSET 9
#define FUTEX_WAKE_BITSET 10
+#define FUTEX_WAIT_REQUEUE_PI 11
+#define FUTEX_CMP_REQUEUE_PI 12
+#define FUTEX_LOCK_PI2 13
#define FUTEX_PRIVATE_FLAG 128
#define FUTEX_CLOCK_REALTIME 256