Manual Page Result
0
Command: thread_fork | Section: 9 | Source: OpenBSD | File: thread_fork.9
THREAD_FORK(9) FreeBSD Kernel Developer's Manual THREAD_FORK(9)
NAME
thread_fork - create a new thread inside a process
SYNOPSIS
#include <sys/types.h>
#include <sys/proc.h>
int
thread_fork(struct proc *p1, void *stack, void *tcb, pid_t *tidptr,
register_t *retval);
DESCRIPTION
thread_fork() creates a new thread out of p1, which should be the current
thread. This function is used to implement the __tfork(3) system call.
stack, which must not be NULL, will be used as the initial value of the
new thread's stack pointer.
If tcb is not NULL, it will be used as the initial address of the new
thread's TCB (thread control block).
If tidptr is not NULL, the TID of the new thread will be copied out there
on success. This is guaranteed to be done before the new thread is
started.
On successful completion the TID of the new thread will be stored in
*retval.
RETURN VALUES
Upon successful completion of the operation, thread_fork() returns 0.
Otherwise, the following error values are returned:
[EAGAIN] The system limit on the total number of threads would be
exceeded.
[ENOMEM] There is insufficient swap space for the new thread.
[EINVAL] The stack argument was NULL.
SEE ALSO
__get_tcb(2), fork(2), __tfork(3), tfind(9)
HISTORY
The thread_fork() function appeared in OpenBSD 6.1.
FreeBSD 14.1-RELEASE-p8 February 15, 2017 FreeBSD 14.1-RELEASE-p8