January 13, 2003 _LWP_CREATE 2

### NAME

_lwp_create - create a new light-weight process

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```int` _lwp_create(```ucontext_t *context``, unsigned long flags``, lwpid_t *new_lwp`)

### DESCRIPTION

_lwp_create(``) causes creation of a new light-weight process, or LWP, and adds it to the current process. The ```context` argument specifies the initial execution context for the new LWP including signal mask, stack, and machine registers.

The following flags affect the creation of the new LWP:

LWP_DETACHED
  The LWP is created detached. The resources associated with a detached LWP will be automatically reclaimed by the system when the LWP exits. Otherwise, a terminated LWP's resources will not be reclaimed until its status is reported to another LWP via _lwp_wait(2).

LWP_SUSPENDED
  The LWP is created suspended, and will not begin execution until it is resumed by another LWP via _lwp_continue(2).

The LWP ID of the new LWP is stored in the location pointed to by ```new_lwp`.

### RETURN VALUES

Upon successful completion, _lwp_create(``) returns a value of 0. Otherwise, an error code is returned to indicate the error.

### ERRORS

_lwp_create(``) will fail and no LWP will be created if:

[```EAGAIN`]
  The system-imposed limit on the total number of LWPs under execution would be exceeded. This limit is configuration-dependent.

[```ENOMEM`]
  There is insufficient swap space for the new LWP.

[```EFAULT`]
  The address pointed to by ```context` or ```new_lwp` is outside the process's allocated address space.

### SEE ALSO

_lwp_continue(2), _lwp_exit(2), _lwp_wait(2), _lwp_makecontext(3)

### HISTORY

The _lwp_create(``) system call first appeared in NetBSD2.0.