摘要
將資料寫入 fifo。
宣告
#include <zircon/syscalls.h>
zx_status_t zx_fifo_write(zx_handle_t handle,
size_t elem_size,
const void* data,
size_t count,
size_t* actual_count);
說明
zx_fifo_write()
會嘗試從 data 寫入 count 個元素 (count * elem_size
個位元組),到帳號代碼指定的鎖定。
如果發泡空間不足以容納所有元素,則寫入的元素數量可能會比要求的數量少。實際寫入的元素數量是透過 actual_count 傳回。
elem_size 指定的元素大小必須與傳入 zx_fifo_create()
的元素大小相符。
actual_count 設為空值。這在編寫單一元素時非常實用:如果 count 為 1,zx_fifo_write()
傳回 ZX_OK
,則 actual_count 保證為 1,因此可以放心忽略。
不寫任何元素並不合法。
權限
handle 必須是 ZX_OBJ_TYPE_FIFO
類型,且具有 ZX_RIGHT_WRITE
。
傳回值
zx_fifo_write()
會在成功時傳回 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_WRITE
。
ZX_ERR_PEER_CLOSED
火爐的另一側已關上。
ZX_ERR_SHOULD_WAIT
擊球已滿。