摘要
擷取系統事件的控制代碼。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_system_get_event(zx_handle_t root_job,
uint32_t kind,
zx_handle_t* event);
說明
root_job 必須是系統根工作的處理常式。
Kind 必須是下列其中一項:
ZX_SYSTEM_EVENT_OUT_OF_MEMORY
- 系統會傳回的事件, 系統處於記憶體不足的狀況時,斷言 ZX_EVENT_SIGNALED。 等待此事件的程序必須快速執行任何重要的 以及關機。而是未指定當下可用的記憶體容量 事件都會發出信號,且未指定等待程序所需的動作時間長度 在核心開始終止程序或開始完全系統重新啟動之前。ZX_SYSTEM_EVENT_IMMINENT_OUT_OF_MEMORY
- 系統會傳回該事件 系統接近記憶體不足時,會斷言 ZX_EVENT_SIGNALED 情境。這個事件的信號比 ZX_SYSTEM_EVENT_OUT_OF_MEMORY 事件。這個事件的目的是 等候程序收集與即將到來相關的診斷資料 ZX_SYSTEM_EVENT_OUT_OF_MEMORY 事件,因為傳送時間可能太晚 安全可靠。ZX_SYSTEM_EVENT_MEMORY_PRESSURE_CRITICAL
- 會傳回事件 系統上的可用記憶體時,就會斷言 ZX_EVENT_SIGNALED 嚴重不足在此情況下,記憶體壓力等級會比 (發生 ZX_SYSTEM_EVENT_OUT_OF_MEMORY 的情況)。確切的可用記憶體容量 觸發的事件ZX_SYSTEM_EVENT_MEMORY_PRESSURE_WARNING
- 會傳回事件 系統上的可用記憶體時,就會斷言 ZX_EVENT_SIGNALED 接近極低的區間在本例中 嚴重性低於 ZX_SYSTEM_EVENT_MEMORY_PRESSURE_CRITICAL。 發出該事件時,實際可用的記憶體容量 未指定。ZX_SYSTEM_EVENT_MEMORY_PRESSURE_NORMAL
- 系統會傳回該事件 系統上的可用記憶體出現以下情況時,就會斷言 ZX_EVENT_SIGNALED: 健康狀態良好發出事件時的確切可用記憶體量 未指定,
核心將在下列五個事件中斷言 ZX_EVENT_SIGNALED 嚴重性遞增:ZX_SYSTEM_EVENT_MEMORY_PRESSURE_NORMAL、 ZX_SYSTEM_EVENT_MEMORY_PRESSURE_WARNING, ZX_SYSTEM_EVENT_MEMORY_PRESSURE_CRITICAL、ZX_SYSTEM_EVENT_IMMINENT_OUT_OF_MEMORY, 和 ZX_SYSTEM_EVENT_OUT_OF_MEMORY。只有一個事件會斷言 在特定時間啟動 ZX_EVENT_SIGNALED。
ZX_SYSTEM_EVENT_OUT_OF_MEMORY 和 ZX_SYSTEM_EVENT_MEMORYPRESSURE* 擷取與系統記憶體壓力等級相對應的事件 這些事件的主要差異流程 等待任何 ZX_SYSTEM_EVENT_MEMORYPRESSURE* 事件時, 採取行動來釋放記憶體,嘗試釋放記憶體 系統的壓力。另一方面,有一種程序正在等待 ZX_SYSTEM_EVENT_OUT_OF_MEMORY 事件必須在 為乾淨關機做準備,目前我們現在無法嘗試 健康狀態良好的記憶體壓力水平
ZX_SYSTEM_EVENT_IMMINENT_OUT_OF_MEMORY 事件可以視為伴生事件 如果是 ZX_SYSTEM_EVENT_OUT_OF_MEMORY,這不會觸發記憶體收回 而是用於擷取記憶體診斷資料,有助於偵錯 會緊接著 ZX_SYSTEM_EVENT_OUT_OF_MEMORY 事件 (如果有的話)。
權限
無。
傳回值
zx_system_get_event()
會在成功時傳回 ZX_OK,而 event 會是有效值
處理常式或下方的錯誤代碼。
錯誤
ZX_ERR_ACCESS_DENIED
呼叫程序政策無效,帳號代碼
root_job 沒有 Kind 的 ZX_RIGHT_MANAGE_PROCESS 權限
ZX_SYSTEM_EVENT_OUT_OF_MEMORY,root_job 不是
系統的根工作
ZX_ERR_INVALID_ARGS
Kind 不是指定的其中一個值。
。