1# zx_futex_requeue_single_owner
2
3## NAME
4
5<!-- Updated by update-docs-from-abigen, do not edit. -->
6
7futex_requeue_single_owner - Wake some number of threads waiting on a futex, and move more waiters to another wait queue.
8
9## SYNOPSIS
10
11<!-- Updated by update-docs-from-abigen, do not edit. -->
12
13```
14#include <zircon/syscalls.h>
15
16zx_status_t zx_futex_requeue_single_owner(const zx_futex_t* value_ptr,
17                                          zx_futex_t current_value,
18                                          const zx_futex_t* requeue_ptr,
19                                          uint32_t requeue_count,
20                                          zx_handle_t new_requeue_owner);
21```
22
23## DESCRIPTION
24
25See [`zx_futex_requeue()`] for a full description.
26
27## RIGHTS
28
29<!-- Updated by update-docs-from-abigen, do not edit. -->
30
31None.
32
33## RETURN VALUE
34
35`zx_futex_requeue_single_owner()` returns **ZX_OK** on success.
36
37## ERRORS
38
39**ZX_ERR_INVALID_ARGS**  One of the following is true:
40+ Either *value_ptr* or *requeue_ptr* is not a valid userspace pointer
41+ Either *value_ptr* or *requeue_ptr* is not aligned to a `sizeof(zx_futex_t)` boundary.
42+ *value_ptr* is the same futex as *requeue_ptr*
43+ *new_requeue_owner* is currently a member of the waiters for either *value_ptr* or *requeue_ptr*
44
45**ZX_ERR_BAD_HANDLE**  *new_requeue_owner* is not **ZX_HANDLE_INVALID**, and not a valid handle.
46**ZX_ERR_WRONG_TYPE**  *new_requeue_owner* is a valid handle, but is not a handle to a thread.
47**ZX_ERR_BAD_STATE**  *current_value* does not match the value at *value_ptr*.
48
49## SEE ALSO
50
51 - [futex objects](../objects/futex.md)
52 - [`zx_futex_requeue()`]
53 - [`zx_futex_wait()`]
54 - [`zx_futex_wake()`]
55
56<!-- References updated by update-docs-from-abigen, do not edit. -->
57
58[`zx_futex_requeue()`]: futex_requeue.md
59[`zx_futex_wait()`]: futex_wait.md
60[`zx_futex_wake()`]: futex_wake.md
61