zx_fifo_write

总结

将数据写入 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() 会尝试将最多 count 个元素(count * elem_size 个字节)从 data 写入到 handle 指定的 fifo。

如果 fifo 中没有足够的空间容纳所有元素,那么写入的元素可能会少于请求的元素。实际写入的元素数量通过 actual_count 返回。

elem_size 指定的元素大小必须与传入 zx_fifo_create() 的元素大小一致。

actual_count 允许为 NULL。这在编写单个元素时非常有用:如果 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 句柄不是 fifo 句柄。

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 fifo 的另一端是关闭的。

ZX_ERR_SHOULD_WAIT Fifo 已满。

另请参阅