zx_fifo_create
名称
fifo_create —— 创建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);
描述
fifo_create() 创建一个fifo,它实际上是elem_count项,每个项有elem_size字节的一对fifo。调用的结果是返回两个端点(endpoint)。从一个端点写入数据的结果,会将一个元素加入到相对端点(opposing endpoint)能够读取的fifo中。
fifo旨在成为共享内存传输的控制面。它们的读写操作比socket或channel更高效,但是对元素和缓冲区的大小有严格的限制。
elem_count大小必须是2的幂,每个fifo的总大小(elem_count elem_size*)不得超过4096个字节。
options参数必须为0。
权限
TODO(ZX-2399)
返回值
fifo_create() 函数执行成功则返回 ZX_OK,如果发生错误,将返回以下值之一。
错误码
ZX_ERR_INVALID_ARGS: out0或out1是无效指针或NULL,或者options是0以外的其它任何值。
ZX_ERR_OUT_OF_RANGE: 可能是下列情况之一,elem_count或elem_size为零;elem_count不是2的幂;elem_count elem_size*大于4096。
ZX_ERR_NO_MEMORY:由于内存不足导致的失败。而用户空间无法处理这个(不太可能发生的)错误。在将来的构建版本中,将不再出现此错误。