mirror of
https://git.proxmox.com/git/mirror_ubuntu-kernels.git
synced 2025-11-23 13:05:21 +00:00
Finish off the 'simple' futex2 syscall group by adding
sys_futex_requeue(). Unlike sys_futex_{wait,wake}() its arguments are
too numerous to fit into a regular syscall. As such, use struct
futex_waitv to pass the 'source' and 'destination' futexes to the
syscall.
This syscall implements what was previously known as FUTEX_CMP_REQUEUE
and uses {val, uaddr, flags} for source and {uaddr, flags} for
destination.
This design explicitly allows requeueing between different types of
futex by having a different flags word per uaddr.
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Geert Uytterhoeven <geert@linux-m68k.org>
Link: https://lore.kernel.org/r/20230921105248.511860556@noisy.programming.kicks-ass.net
52 lines
1.4 KiB
C
52 lines
1.4 KiB
C
/* SPDX-License-Identifier: GPL-2.0-only */
|
|
/*
|
|
* Copyright (C) 2012 ARM Ltd.
|
|
*/
|
|
#ifdef CONFIG_COMPAT
|
|
#define __ARCH_WANT_COMPAT_STAT
|
|
#define __ARCH_WANT_COMPAT_STAT64
|
|
#define __ARCH_WANT_SYS_GETHOSTNAME
|
|
#define __ARCH_WANT_SYS_PAUSE
|
|
#define __ARCH_WANT_SYS_GETPGRP
|
|
#define __ARCH_WANT_SYS_NICE
|
|
#define __ARCH_WANT_SYS_SIGPENDING
|
|
#define __ARCH_WANT_SYS_SIGPROCMASK
|
|
#define __ARCH_WANT_COMPAT_SYS_SENDFILE
|
|
#define __ARCH_WANT_SYS_UTIME32
|
|
#define __ARCH_WANT_SYS_FORK
|
|
#define __ARCH_WANT_SYS_VFORK
|
|
|
|
/*
|
|
* Compat syscall numbers used by the AArch64 kernel.
|
|
*/
|
|
#define __NR_compat_restart_syscall 0
|
|
#define __NR_compat_exit 1
|
|
#define __NR_compat_read 3
|
|
#define __NR_compat_write 4
|
|
#define __NR_compat_gettimeofday 78
|
|
#define __NR_compat_sigreturn 119
|
|
#define __NR_compat_rt_sigreturn 173
|
|
#define __NR_compat_clock_gettime 263
|
|
#define __NR_compat_clock_getres 264
|
|
#define __NR_compat_clock_gettime64 403
|
|
#define __NR_compat_clock_getres_time64 406
|
|
|
|
/*
|
|
* The following SVCs are ARM private.
|
|
*/
|
|
#define __ARM_NR_COMPAT_BASE 0x0f0000
|
|
#define __ARM_NR_compat_cacheflush (__ARM_NR_COMPAT_BASE + 2)
|
|
#define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE + 5)
|
|
#define __ARM_NR_COMPAT_END (__ARM_NR_COMPAT_BASE + 0x800)
|
|
|
|
#define __NR_compat_syscalls 457
|
|
#endif
|
|
|
|
#define __ARCH_WANT_SYS_CLONE
|
|
|
|
#ifndef __COMPAT_SYSCALL_NR
|
|
#include <uapi/asm/unistd.h>
|
|
#endif
|
|
|
|
#define NR_syscalls (__NR_syscalls)
|