André Almeida <andrealmeid@xxxxxxxxxxxxx> 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