zx_job_create

总结

创建新作业。

声明

#include <zircon/syscalls.h>

zx_status_t zx_job_create(zx_handle_t parent_job,
                          uint32_t options,
                          zx_handle_t* out);

说明

zx_job_create() 会根据给定父作业创建一个新的子作业对象

成功后,将返回新作业的句柄。

内核会跟踪并限制作业的“高度”,即它与根作业的距离。在高度超过内部“最大高度”值的父级下创建作业是非法的。(不过,在此类作业下创建流程是合法的。)

作业句柄可能会等待 (TODO(cpu):展开)

权限

parent_job 必须为 ZX_OBJ_TYPE_JOB 类型,且具有 ZX_RIGHT_MANAGE_JOB

返回值

zx_job_create() 会在成功时返回 ZX_OK 和新作业的句柄(通过 out)。如果失败,则返回负的错误值。

错误

ZX_ERR_BAD_HANDLE parent_job 不是有效的句柄。

ZX_ERR_WRONG_TYPE parent_job 不是作业句柄。

ZX_ERR_INVALID_ARGS options 为非零值,或 out 为无效指针。

ZX_ERR_ACCESS_DENIED parent_job 没有 ZX_RIGHT_WRITEZX_RIGHT_MANAGE_JOB 权限。

ZX_ERR_OUT_OF_RANGE parent_job 的高度过大,无法创建子作业。

ZX_ERR_NO_MEMORY 由于内存不足而失败。 用户空间没有什么方法来处理此(不太可能)错误。在以后的 build 中,此错误不会再发生。

ZX_ERR_BAD_STATE:父作业对象处于不活跃状态。

另请参阅