zx_fifo_read

摘要

讀取 FiF 中的資料。

宣告

#include <zircon/syscalls.h>

zx_status_t zx_fifo_read(zx_handle_t handle,
                         size_t elem_size,
                         void* data,
                         size_t count,
                         size_t* actual_count);

說明

zx_fifo_read() 會嘗試將 FiF 的「控制代碼」元素讀取到「資料」中。

如果圖標中的元素不足以完成整個要求,讀取的元素數量可能會超過要求的數量。實際讀取的元素數量是透過 actual_count 傳回。

elem_size 指定的元素大小必須與傳入 zx_fifo_create() 的元素大小相符。

data 的大小至少必須為 count * elem_size 個位元組。

actual_count 設為空值。這在讀取單一元素時非常實用:如果 count 為 1,zx_fifo_read() 傳回 ZX_OK,則 actual_count 保證為 1,因此可以放心忽略。

閱讀零元素並不合法。

權限

handle 必須是 ZX_OBJ_TYPE_FIFO 類型,且具有 ZX_RIGHT_READ

傳回值

zx_fifo_read() 會在成功時傳回 ZX_OK,並透過 actual_count 傳回讀取的元素數量 (至少一個)。

錯誤

ZX_ERR_BAD_HANDLE 帳號代碼不是有效的帳號代碼。

ZX_ERR_WRONG_TYPE 處理常式並非 FiF 控制代碼。

ZX_ERR_INVALID_ARGS data 是無效指標,actual_count 是無效指標。

ZX_ERR_OUT_OF_RANGE count 為零,或 elem_size 不等於 Fifo 的元素大小。

ZX_ERR_ACCESS_DENIED 處理常式沒有 ZX_RIGHT_READ

ZX_ERR_PEER_CLOSED 火爐的另一側已關上。

ZX_ERR_SHOULD_WAIT擊球上沒有空洞。

另請參閱