总结
创建事件对。
声明
#include <zircon/syscalls.h>
zx_status_t zx_eventpair_create(uint32_t options,
zx_handle_t* out0,
zx_handle_t* out1);
说明
zx_eventpair_create()
会创建一个事件对,即一对可互发信号的对象。
可以使用 zx_object_signal()
设置或清除信号 ZX_EVENTPAIR_SIGNALED
和 ZX_USER_SIGNAL_n
(其中 n 为 0 到 7),前者会修改对象本身的信号,而 zx_object_signal_peer()
则会修改对应的信号。
当其中一个对象的所有手柄都已关闭时,将在另一个对象上断言 ZX_EVENTPAIR_PEER_CLOSED
信号。
新创建的句柄将拥有 ZX_RIGHT_TRANSFER
、ZX_RIGHT_DUPLICATE
、ZX_RIGHT_READ
、ZX_RIGHT_WRITE
、ZX_RIGHT_SIGNAL
和 ZX_RIGHT_SIGNAL_PEER
权限。
目前不支持任何选项,因此 options 必须设置为 0。
权限
调用方作业政策必须允许 ZX_POL_NEW_EVENTPAIR
。
返回值
zx_eventpair_create()
会在成功时返回 ZX_OK
。如果失败,则会返回(负)错误代码。
错误
ZX_ERR_INVALID_ARGS
out0 或 out0 是无效的指针或 NULL。
ZX_ERR_NOT_SUPPORTED
选项设置了不受支持的标志(即,非 0)。
ZX_ERR_NO_MEMORY
由于内存不足而失败。
用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。
另请参阅
zx_event_create()
zx_handle_close()
zx_handle_duplicate()
zx_handle_replace()
zx_object_signal()
zx_object_signal_peer()
zx_object_wait_async()
zx_object_wait_many()
zx_object_wait_one()