Name
futex_wait_setup —
Prepare to wait on a futex
Synopsis
int futex_wait_setup ( | u32 __user * uaddr, |
| u32 val, |
| unsigned int flags, |
| struct futex_q * q, |
| struct futex_hash_bucket ** hb) ; |
Arguments
uaddr
the futex userspace address
val
the expected value
flags
futex flags (FLAGS_SHARED, etc.)
q
the associated futex_q
hb
storage for hash_bucket pointer to be returned to caller
Description
Setup the futex_q and locate the hash_bucket. Get the futex value and
compare it with the expected value. Handle atomic faults internally.
Return with the hb lock held and a q.key reference on success, and unlocked
with no q.key reference on failure.
Return
0 - uaddr contains val and hb has been locked;
<1 - -EFAULT or -EWOULDBLOCK (uaddr does not contain val) and hb is unlocked