blob: fb41bf513384eabb15ab3dc4fcc32fe72e484200 [file] [log] [blame] [view]
# zx_system_get_event
## NAME
<!-- Updated by update-docs-from-fidl, do not edit. -->
Retrieve a handle to a system event.
## SYNOPSIS
<!-- Updated by update-docs-from-fidl, do not edit. -->
```c
#include <zircon/syscalls.h>
zx_status_t zx_system_get_event(zx_handle_t root_job,
uint32_t kind,
zx_handle_t* event);
```
## DESCRIPTION
*root_job* must be a handle to the root job of the system.
*kind* must be one of the following:
- **ZX_SYSTEM_EVENT_OUT_OF_MEMORY** - An *event* will be returned that will
assert ZX_EVENT_SIGNALED when the system is nearing an out-of-memory situation.
A process that is waiting on this event must quickly perform any important
shutdown work. It is unspecified how much memory is available at the time this
event is signaled, and unspecified how long the waiting process has to act
before the kernel starts terminating processes or starting a full system reboot.
- **ZX_SYSTEM_EVENT_MEMORY_PRESSURE_CRITICAL** - An *event* will be returned
that will assert ZX_EVENT_SIGNALED when available memory on the system is
critically low. The memory pressure level in this case is less severe than in
the case of ZX_SYSTEM_EVENT_OUT_OF_MEMORY. The exact amount of memory available
at the time the event is signaled is unspecified.
- **ZX_SYSTEM_EVENT_MEMORY_PRESSURE_WARNING** - An *event* will be returned
that will assert ZX_EVENT_SIGNALED when available memory on the system is
approaching the critically low range. The memory pressure level in this case is
less severe than in the case of ZX_SYSTEM_EVENT_MEMORY_PRESSURE_CRITICAL. The
exact amount of memory available at the time the event is signaled is
unspecified.
- **ZX_SYSTEM_EVENT_MEMORY_PRESSURE_NORMAL** - An *event* will be returned that
will assert ZX_EVENT_SIGNALED when available memory on the system is
healthy. The exact amount of memory available at the time the event is signaled
is unspecified.
The kernel will assert ZX_EVENT_SIGNALED on these four events in the following
order of increasing severity: ZX_SYSTEM_EVENT_MEMORY_PRESSURE_NORMAL,
ZX_SYSTEM_EVENT_MEMORY_PRESSURE_WARNING,
ZX_SYSTEM_EVENT_MEMORY_PRESSURE_CRITICAL, ZX_SYSTEM_EVENT_OUT_OF_MEMORY. Exactly
one of these events will assert ZX_EVENT_SIGNALED at a given time.
Both ZX_SYSTEM_EVENT_OUT_OF_MEMORY and ZX_SYSTEM_EVENT_MEMORY_PRESSURE_\*
retrieve events corresponding to system memory pressure levels, but there is a
key difference in the way these events are intended to be used. A process
waiting on the any of the ZX_SYSTEM_EVENT_MEMORY_PRESSURE_\* events must
undertake actions that free up memory and attempt to relieve the memory
pressure on the system. On the other hand, a process waiting on the
ZX_SYSTEM_EVENT_OUT_OF_MEMORY event must perform necessary actions in
preparation for a clean shutdown - at this point it is too late to attempt
recovery to a healthy memory pressure level.
## RIGHTS
<!-- Updated by update-docs-from-fidl, do not edit. -->
None.
## RETURN VALUE
`zx_system_get_event()` returns ZX_OK on success, and *event* will be a valid
handle, or an error code from below on failure.
## ERRORS
**ZX_ERR_ACCESS_DENIED** The calling process' policy was invalid, the handle
*root_job* did not have ZX_RIGHT_MANAGE_PROCESS rights for *kind*
ZX_SYSTEM_EVENT_OUT_OF_MEMORY, *root_job* was not the
root job of the system.
**ZX_ERR_INVALID_ARGS** *kind* was not one of the supported values specified
above.