Skip to content

Commit 0f4b5f9

Browse files
futex: Add sys_futex_requeue()
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) <[email protected]> Reviewed-by: Thomas Gleixner <[email protected]> Acked-by: Geert Uytterhoeven <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent 27b88f3 commit 0f4b5f9

22 files changed

Lines changed: 64 additions & 2 deletions

File tree

arch/alpha/kernel/syscalls/syscall.tbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -494,3 +494,4 @@
494494
562 common fchmodat2 sys_fchmodat2
495495
563 common futex_wake sys_futex_wake
496496
564 common futex_wait sys_futex_wait
497+
565 common futex_requeue sys_futex_requeue

arch/arm/tools/syscall.tbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,3 +468,4 @@
468468
452 common fchmodat2 sys_fchmodat2
469469
454 common futex_wake sys_futex_wake
470470
455 common futex_wait sys_futex_wait
471+
456 common futex_requeue sys_futex_requeue

arch/arm64/include/asm/unistd.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
#define __ARM_NR_compat_set_tls (__ARM_NR_COMPAT_BASE + 5)
4040
#define __ARM_NR_COMPAT_END (__ARM_NR_COMPAT_BASE + 0x800)
4141

42-
#define __NR_compat_syscalls 456
42+
#define __NR_compat_syscalls 457
4343
#endif
4444

4545
#define __ARCH_WANT_SYS_CLONE

arch/arm64/include/asm/unistd32.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -915,6 +915,8 @@ __SYSCALL(__NR_fchmodat2, sys_fchmodat2)
915915
__SYSCALL(__NR_futex_wake, sys_futex_wake)
916916
#define __NR_futex_wait 455
917917
__SYSCALL(__NR_futex_wait, sys_futex_wait)
918+
#define __NR_futex_requeue 456
919+
__SYSCALL(__NR_futex_requeue, sys_futex_requeue)
918920

919921
/*
920922
* Please add new compat syscalls above this comment and update

arch/ia64/kernel/syscalls/syscall.tbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,3 +375,4 @@
375375
452 common fchmodat2 sys_fchmodat2
376376
454 common futex_wake sys_futex_wake
377377
455 common futex_wait sys_futex_wait
378+
456 common futex_requeue sys_futex_requeue

arch/m68k/kernel/syscalls/syscall.tbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -454,3 +454,4 @@
454454
452 common fchmodat2 sys_fchmodat2
455455
454 common futex_wake sys_futex_wake
456456
455 common futex_wait sys_futex_wait
457+
456 common futex_requeue sys_futex_requeue

arch/microblaze/kernel/syscalls/syscall.tbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,3 +460,4 @@
460460
452 common fchmodat2 sys_fchmodat2
461461
454 common futex_wake sys_futex_wake
462462
455 common futex_wait sys_futex_wait
463+
456 common futex_requeue sys_futex_requeue

arch/mips/kernel/syscalls/syscall_n32.tbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -393,3 +393,4 @@
393393
452 n32 fchmodat2 sys_fchmodat2
394394
454 n32 futex_wake sys_futex_wake
395395
455 n32 futex_wait sys_futex_wait
396+
456 n32 futex_requeue sys_futex_requeue

arch/mips/kernel/syscalls/syscall_n64.tbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -369,3 +369,4 @@
369369
452 n64 fchmodat2 sys_fchmodat2
370370
454 n64 futex_wake sys_futex_wake
371371
455 n64 futex_wait sys_futex_wait
372+
456 n64 futex_requeue sys_futex_requeue

arch/mips/kernel/syscalls/syscall_o32.tbl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -442,3 +442,4 @@
442442
452 o32 fchmodat2 sys_fchmodat2
443443
454 o32 futex_wake sys_futex_wake
444444
455 o32 futex_wait sys_futex_wait
445+
456 o32 futex_requeue sys_futex_requeue

0 commit comments

Comments
 (0)