zx_fifo_write


英文原文快照


名称

fifo_write —— 写入数据到fifo中

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_fifo_write(zx_handle_t handle, size_t elem_size,
  3. const void* buffer, size_t count, size_t* actual_count);

描述

fifo_write() 尝试从bufhandle指定的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_HANDLEhandle是无效句柄。

ZX_ERR_WRONG_TYPEhandle不是fifo类型句柄。

ZX_ERR_INVALID_ARGSbuffer是无效指针或actual_count是无效指针。

ZX_ERR_OUT_OF_RANGEcount为零或elem_size不等于fifo的元素大小。

ZX_ERR_ACCESS_DENIEDhandle没有ZX_RIGHT_WRITE权限。

ZX_ERR_PEER_CLOSED: fifo的另一侧已关闭。

ZX_ERR_SHOULD_WAIT: fifo已满。

另见

fifo_createfifo_read