On 9/22/23 5:03 AM, Peter Zijlstra wrote:
On Fri, Sep 22, 2023 at 11:35:03AM +0200, Ingo Molnar wrote:
quoted
* peterz@infradead.org [off-list ref] wrote:
quoted
--- linux-2.6.orig/kernel/futex/syscalls.c
+++ linux-2.6/kernel/futex/syscalls.c
@@ -396,6 +396,44 @@ SYSCALL_DEFINE6(futex_wait,
return ret;
}
+/*
+ * sys_futex_requeue - Requeue a waiter from one futex to another
+ * @waiters: array describing the source and destination futex
+ * @flags: unused
+ * @nr_wake: number of futexes to wake
+ * @nr_requeue: number of futexes to requeue
+ *
+ * Identical to the traditional FUTEX_CMP_REQUEUE op, except it is part of the
+ * futex2 family of calls.
+ */
+
+SYSCALL_DEFINE4(futex_requeue,
+ struct futex_waitv __user *, waiters,
+ unsigned int, flags,
+ int, nr_wake,
+ int, nr_requeue)
+{
+ struct futex_vector futexes[2];
+ u32 cmpval;
+ int ret;
+
+ if (flags)
+ return -EINVAL;
Small detail, but isn't -ENOSYS the canonical error code for functionality
not yet implemented - which the unused 'flags' ABI is arguably?
-EINVAL is for recognized but incorrect parameters, such as:
IIUC 'unknown flag' falls into the -EINVAL return category. Here we
happen to have no known flags, but that should not matter.
Yep, -ENOSYS is for not having the syscall at all, -EINVAL for unknown
flags set.
--
Jens Axboe