---
name: "futex_requeue"
section: "9"
platform: "linux"
package: "linux-manual-4.9"
version: "4.9.228-1"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/futex_requeue"
---

# futex\_requeue(9)

Requeue waiters from uaddr1 to uaddr2

## NAME

futex\_requeue - Requeue waiters from uaddr1 to uaddr2

## SYNOPSIS

**int futex\_requeue(u32 \_\_user \*** *uaddr1***, unsigned int** *flags***, u32 \_\_user \*** *uaddr2***, int** *nr\_wake***, int** *nr\_requeue***, u32 \*** *cmpval***, int** *requeue\_pi***);**

## ARGUMENTS

*uaddr1*

source futex user address

*flags*

futex flags (FLAGS\_SHARED, etc.)

*uaddr2*

target futex user address

*nr\_wake*

number of waiters to wake (must be 1 for requeue\_pi)

*nr\_requeue*

number of waiters to requeue (0-INT\_MAX)

*cmpval*

*uaddr1* expected value (or **NULL**)

*requeue\_pi*

if we are attempting to requeue from a non-pi futex to a pi futex (pi to pi requeue is not supported)

## DESCRIPTION

Requeue waiters on uaddr1 to uaddr2. In the requeue\_pi case, try to acquire uaddr2 atomically on behalf of the top waiter.

## RETURN

\>=0 - on success, the number of tasks requeued or woken; \<0 - on error

## AUTHOR

**Rusty Russell** \<rusty@rustcorp.com.au\>

Author.

## COPYRIGHT
