总结
创建一个 fifo。
声明
#include <zircon/syscalls.h>
zx_status_t zx_fifo_create(size_t elem_count,
size_t elem_size,
uint32_t options,
zx_handle_t* out0,
zx_handle_t* out1);
说明
zx_fifo_create()
会创建一个 fifo,它实际上是一对由 elem_size 字节的 elem_count 条目组成的 fifos。返回两个端点。向一个端点写入一个元素,会将一个元素加入对向端点从中读取数据的 fifo。
Fifo 旨在成为共享内存传输的控制平面。它们的读写操作比套接字或通道更高效,但是元素和缓冲区的大小有严格的限制。
每个 fifo (elem_count * elem_size
) 的总大小不能超过 4096 字节。
options 参数必须为 0。
权限
调用方作业政策必须允许 ZX_POL_NEW_FIFO
。
返回值
zx_fifo_create()
会在成功时返回 ZX_OK
。如果失败,将返回以下值之一。
错误
ZX_ERR_INVALID_ARGS
out0 或 out1 是无效的指针,或者 NULL 或 options 是 0 以外的任何值。
ZX_ERR_OUT_OF_RANGE
elem_count 或 elem_size 为零,或 elem_count * elem_size 大于 4096。
ZX_ERR_NO_MEMORY
由于内存不足而失败。
用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。