Thread (21 messages) flat view 21 messages, 4 authors, 2023-09-28

Re: [PATCH v3 10/15] futex: Add sys_futex_requeue()

From: Peter Zijlstra <peterz@infradead.org>
Date: 2023-09-22 11:04:14
Also in: linux-arch, linux-mm, lkml

On Fri, Sep 22, 2023 at 11:35:03AM +0200, Ingo Molnar wrote:
* 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.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help