futex_wait_setup
Prev | Chapter 12. Futex API reference | Next

## 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

Prev | Up | Next
futex_wait_queue_me | Home | handle_early_requeue_pi_wakeup