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