Summary

Create a thread.

Declaration

#include <zircon/syscalls.h>

zx_status_t zx_thread_create(zx_handle_t process,
                             const char* name,
                             size_t name_size,
                             uint32_t options,
                             zx_handle_t* out);

Description

zx_thread_create() creates a thread within the specified process.

Upon success a handle for the new thread is returned. The thread will not start executing until zx_thread_start() is called.

name is silently truncated to a maximum of ZX_MAX_NAME_LEN-1 characters.

Thread handles may be waited on and will assert the signal ZX_THREAD_TERMINATED when the thread stops executing (due to zx_thread_exit() being called).

process is the controlling process object for the new thread, which will become a child of that process.

For thread lifecycle details see thread object.

Rights

process must be of type ZX_OBJ_TYPE_PROCESS and have ZX_RIGHT_MANAGE_THREAD.

Return value

On success, zx_thread_create() returns ZX_OK and a handle (via out) to the new thread. In the event of failure, a negative error value is returned.

Errors

ZX_ERR_BAD_HANDLE process is not a valid handle.

ZX_ERR_WRONG_TYPE process is not a process handle.

ZX_ERR_ACCESS_DENIED process does not have the ZX_RIGHT_MANAGE_THREAD right.

ZX_ERR_INVALID_ARGS name or out was an invalid pointer, or options was non-zero.

ZX_ERR_NO_MEMORY Failure due to lack of memory. There is no good way for userspace to handle this (unlikely) error. In a future build this error will no longer occur.

See also

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025-03-04 UTC.