blob: d886ed2d6ae9f0b701acae58e9649be2b9d6df3a [file] [log] [blame] [view]
# zx_futex_wake
## NAME
<!-- Updated by update-docs-from-fidl, do not edit. -->
Wake some number of threads waiting on a futex, and set the ownership of the futex to nothing.
## SYNOPSIS
<!-- Updated by update-docs-from-fidl, do not edit. -->
```c
#include <zircon/syscalls.h>
zx_status_t zx_futex_wake(const zx_futex_t* value_ptr, uint32_t wake_count);
```
## DESCRIPTION
Waking a futex causes *wake_count* threads waiting on the *value_ptr*
futex to be woken up.
Waking up zero threads is not an error condition. Passing in an unallocated
address for *value_ptr* is not an error condition.
## OWNERSHIP
A successful call to `zx_futex_wake()` results in the owner of the futex being
set to nothing, regardless of the wake count. In order to transfer ownership of
a futex, use the [`zx_futex_wake_single_owner()`] variant instead.
[`zx_futex_wake_single_owner()`] will attempt to wake exactly one thread from the
futex wait queue. If there is at least one thread to wake, the owner of the
futex will be set to the thread which was woken. Otherwise, the futex will have
no owner.
See *Ownership and Priority Inheritance* in [futex](/docs/reference/kernel_objects/futex.md) for
details.
## RIGHTS
<!-- Updated by update-docs-from-fidl, do not edit. -->
None.
## RETURN VALUE
`zx_futex_wake()` returns **ZX_OK** on success.
## ERRORS
**ZX_ERR_INVALID_ARGS** *value_ptr* is not aligned.
## SEE ALSO
- [futex objects](/docs/reference/kernel_objects/futex.md)
- [`zx_futex_requeue()`]
- [`zx_futex_wait()`]
- [`zx_futex_wake_single_owner()`]
<!-- References updated by update-docs-from-fidl, do not edit. -->
[`zx_futex_requeue()`]: futex_requeue.md
[`zx_futex_wait()`]: futex_wait.md
[`zx_futex_wake_single_owner()`]: futex_wake_single_owner.md