| From | Gabriel Krisman Bertazi <> | Subject | Re: [RFC PATCH 03/13] futex2: Implement vectorized wait | Date | Mon, 15 Feb 2021 15:03:48 -0500 |
| |
André Almeida <andrealmeid@collabora.com> writes:
> Add support to wait on multiple futexes. This is the interface > implemented by this syscall: > > futex_waitv(struct futex_waitv *waiters, unsigned int nr_futexes, > unsigned int flags, struct timespec *timo) > > struct futex_waitv { > void *uaddr; > unsigned int val; > unsigned int flags; > }; > > Given an array of struct futex_waitv, wait on each uaddr. The thread > wakes if a futex_wake() is performed at any uaddr. The syscall returns > immediately if any waiter has *uaddr != val. *timo is an optional > timeout value for the operation. The flags argument of the syscall > should be used solely for specifying the timeout as realtime, if needed. > Flags for shared futexes, sizes, etc. should be used on the individual > flags of each waiter.
Given the previous proposal from Zebediah, one use case Wine has to support is the ability to wait on all (instead of any) of a list of futexes . I suppose that could be done by a new FLAG_WAITALL passed on the third argument of the syscall.
-- Gabriel Krisman Bertazi
|