zx_fifo_write
名称
fifo_write —— 写入数据到fifo中
概要
#include <zircon/syscalls.h>
zx_status_t zx_fifo_write(zx_handle_t handle, size_t elem_size,
const void* buffer, size_t count, size_t* actual_count);
描述
fifo_write() 尝试从buf向handle指定的fifo写入count个元素(即count elem_size*个字节)。
如果fifo中没有足够的空间来容纳所有元素,则写入比请求更少数量的元素,实际写入的元素数量通过actual_count返回。
elem_size指定的元素大小必须与传给 fifo_create() 的元素大小一致。
actual_count允许为NULL,这对于写入单个元素时很有用:如果count为1,且fifo_write() 返回 ZX_OK,那么actual_count将保证为1,因此可以安全地被忽略掉。
写入零个元素是非法的。
权限
handle必须具有ZX_RIGHT_WRITE权限。
返回值
fifo_write() 调用成功则返回 ZX_OK,并通过actual_count返回写入的元素数量(至少为1)。
错误码
ZX_ERR_BAD_HANDLE: handle是无效句柄。
ZX_ERR_WRONG_TYPE: handle不是fifo类型句柄。
ZX_ERR_INVALID_ARGS: buffer是无效指针或actual_count是无效指针。
ZX_ERR_OUT_OF_RANGE: count为零或elem_size不等于fifo的元素大小。
ZX_ERR_ACCESS_DENIED: handle没有ZX_RIGHT_WRITE权限。
ZX_ERR_PEER_CLOSED: fifo的另一侧已关闭。
ZX_ERR_SHOULD_WAIT: fifo已满。