zx_system_watch_memory_stall

摘要

在一段時間內,如果記憶體停滯層級超過指定的門檻,就會擷取信號的事件。

宣告

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

說明

resource 必須是停滯資源的句柄。

kind 必須是下列其中一種 (請參閱 zx_object_get_info() 中的 ZX_INFO_MEMORY_STALL):

  • ZX_SYSTEM_MEMORY_STALL_SOME
  • ZX_SYSTEM_MEMORY_STALL_FULL

threshold 是觸發信號的最低停滯時間。

window 是觀察期間的時間長度。

必須滿足 0 < threshold <= window <= 10 秒的條件。

如果在最後的時間範圍內,監控的停滯計時器至少增加了 threshold,則核心會在傳回的事件上設定 (ZX_EVENT_SIGNALED),並在不再符合情況時清除。

權限

呼叫端工作政策必須允許 ZX_POL_NEW_EVENT

傳回值

zx_system_watch_memory_stall() 會在成功時傳回 ZX_OK,而 event 會是有效的句柄,或在失敗時傳回下列的錯誤代碼。

錯誤

ZX_ERR_BAD_HANDLE resource 不是有效的句柄。

ZX_ERR_WRONG_TYPE 資源不是資源類型 ZX_RSRC_KIND_SYSTEM

ZX_ERR_OUT_OF_RANGE resource 不在 [ZX_RSRC_SYSTEM_STALL_BASE, ZX_RSRC_SYSTEM_STALL_BASE+1) 的範圍內。

ZX_ERR_INVALID_ARGS kind 不是上述值。

ZX_ERR_INVALID_ARGS 閾值視窗不在允許的範圍內。

ZX_ERR_NO_MEMORY 記憶體不足導致失敗。使用者空間沒有適當的方式來處理這個 (不太可能發生的) 錯誤。日後的版本將不會再發生這個錯誤。

附註

即使 API 將thresholdwindow 定義為持續時間類型 (即以奈秒為單位),核心可能不會使用要求值的完整精確度。

另請參閱