摘要
创建新作业。
声明
#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_WRITE
或
右侧 ZX_RIGHT_MANAGE_JOB
。
ZX_ERR_OUT_OF_RANGE
parent_job 的高度过大,无法创建子作业。
ZX_ERR_NO_MEMORY
因内存不足而失败。
用户空间没有好办法处理这种(不太可能)错误。
在将来的版本中,此错误不会再发生。
ZX_ERR_BAD_STATE
父级作业对象处于终止状态。