zx_fifo_read


英文原文快照


名称

fifo_read —— 从fifo中读取数据

概要

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

描述

fifo_read() 尝试从handle指向的fifo中读取count个元素到buffer

如果fifo中没有足够的元素来满足整个请求,则读取比请求的元素少的数量,实际读取的元素数量通过actual_count返回。

elem_size指定的元素大小必须与传递给 fifo_create() 的元素大小一致。

buffer的大小必须至少为count elem_size*个字节。

actual_count允许为NULL,这对于读取单个元素时很有用:如果count为1且 fifo_read() 返回 ZX_OK,那么actual_count保证为1,因此可以安全地被忽略。

读取零个元素是非法的。

权限

handle必须具有ZX_RIGHT_READ权限。

返回值

fifo_read() 调用成功则返回 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_READ权限。

ZX_ERR_PEER_CLOSED: fifo的另一侧已关闭。

ZX_ERR_SHOULD_WAIT: fifo已满。

另见

fifo_createfifo_write