Summary
Retrieve an event that becomes signaled if the memory stall level exceeds a given threshold over a time window.
Declaration
#include <zircon/syscalls-next.h>
zx_status_t zx_system_watch_memory_stall(zx_handle_t resource,
zx_system_memory_stall_type_t kind,
zx_duration_mono_t threshold,
zx_duration_mono_t window,
zx_handle_t* event);
Description
resource must be a handle to the stall resource.
kind must be one of the following (see the ZX_INFO_MEMORY_STALL
in zx_object_get_info()
):
ZX_SYSTEM_MEMORY_STALL_SOME
ZX_SYSTEM_MEMORY_STALL_FULL
threshold is minimum stall time that will trigger the signal.
window is the duration of the observation window.
It must hold that 0 < threshold <= window <= 10 seconds.
The kernel will set (ZX_EVENT_SIGNALED
) on the returned event if the
watched stall timer grew by at least threshold during the last
window, and clear it once it is no longer the case.
Rights
Caller job policy must allow ZX_POL_NEW_EVENT
.
Return value
zx_system_watch_memory_stall()
returns ZX_OK on success, and event
will be a valid handle, or an error code from below on failure.
Errors
ZX_ERR_BAD_HANDLE
resource is not a valid handle.
ZX_ERR_WRONG_TYPE
resource is not resource kind
ZX_RSRC_KIND_SYSTEM
.
ZX_ERR_OUT_OF_RANGE
resource is not in the range
[ZX_RSRC_SYSTEM_STALL_BASE
, ZX_RSRC_SYSTEM_STALL_BASE
+1).
ZX_ERR_INVALID_ARGS
kind is not one of the above values.
ZX_ERR_INVALID_ARGS
threshold or window are not in the allowed
range.
ZX_ERR_NO_MEMORY
Failure due to lack of memory.
There is no good way for userspace to handle this (unlikely) error.
In a future build this error will no longer occur.
Notes
Even the API defines threshold and window as the duration type (that is, in nanoseconds), the kernel may not use the full precision of the requested values.
See also
ZX_INFO_MEMORY_STALL
topic inzx_object_get_info()