摘要
创建计数器。
声明
#include <zircon/syscalls.h>
zx_status_t zx_counter_create(uint32_t options, zx_handle_t* out);
说明
zx_counter_create()
会创建一个计数器,该对象封装了一个有符号的 64 位整数值,该值可以递增、递减、读取或写入。
当值大于零时,系统会断言 ZX_COUNTER_POSITIVE
信号。否则,断言 ZX_COUNTER_NON_POSITIVE
。始终会断言这两个信号中的一个,而绝不能同时断言两个信号。
此外,您还可以使用 zx_object_signal()
在计数器上设置或清除信号 ZX_COUNTER_SIGNALED
。这与计数器的值或其他信号的状态无关。
新创建的标识名将拥有 ZX_RIGHTS_BASIC
、ZX_RIGHTS_IO
和 ZX_RIGHT_SIGNAL
权限。值将为零,并且系统将对新创建的对象断言 ZX_COUNTER_NON_POSITIVE
信号。
权限
TODO(https://fxbug.dev/387324141):添加/强制执行 ZX_POL_NEW_COUNTER 政策。
调用方作业政策必须允许 ZX_POL_NEW_COUNTER
。
返回值
如果成功,zx_counter_create()
会返回 ZX_OK
和有效的计数器句柄(通过 out)。
如果失败,则会返回错误值。
错误
ZX_ERR_INVALID_ARGS
out 是无效指针,或 options 为非零。
ZX_ERR_NO_MEMORY
因内存不足而失败。用户空间没有好办法处理此(不太可能)错误。在未来的 build 中,此错误不会再发生。