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