zx_fifo_create


英文原文快照


名称

fifo_create —— 创建fifo

概要

  1. #include <zircon/syscalls.h>
  2. zx_status_t zx_fifo_create(size_t elem_count, size_t elem_size,
  3. uint32_t options,
  4. zx_handle_t* out0, zx_handle_t* out1);

描述

fifo_create() 创建一个fifo,它实际上是elem_count项,每个项有elem_size字节的一对fifo。调用的结果是返回两个端点(endpoint)。从一个端点写入数据的结果,会将一个元素加入到相对端点(opposing endpoint)能够读取的fifo中。

fifo旨在成为共享内存传输的控制面。它们的读写操作比socketchannel更高效,但是对元素和缓冲区的大小有严格的限制。

elem_count大小必须是2的幂,每个fifo的总大小(elem_count elem_size*)不得超过4096个字节。

options参数必须为0。

权限

TODO(ZX-2399)

返回值

fifo_create() 函数执行成功则返回 ZX_OK,如果发生错误,将返回以下值之一。

错误码

ZX_ERR_INVALID_ARGSout0out1是无效指针或NULL,或者options是0以外的其它任何值。

ZX_ERR_OUT_OF_RANGE: 可能是下列情况之一,elem_countelem_size为零;elem_count不是2的幂;elem_count elem_size*大于4096。

ZX_ERR_NO_MEMORY:由于内存不足导致的失败。而用户空间无法处理这个(不太可能发生的)错误。在将来的构建版本中,将不再出现此错误。

另见

fifo_readfifo_write