摘要
从 fifo 读取数据。
声明
#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() 会尝试从 fifo 中读取最多 count 个元素
handle 转换为 data。
如果没有足够的 元素,以满足整个请求。您获得的 通过 actual_count 返回实际读取的元素。
elem_size 指定的元素尺寸必须与元素尺寸一致
传入 zx_fifo_create() 的请求消息。
data 的大小必须至少为 count * elem_size 个字节。
actual_count 允许为 NULL。在阅读这些文章时,
单个元素:如果 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 handle 不是有效的句柄。
ZX_ERR_WRONG_TYPE handle 不是 fifo 句柄。
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 FIFO 的另一端是关着的。
ZX_ERR_SHOULD_WAIT fifo 为空。