_LWP_CREATE(2)            NetBSD System Calls Manual            _LWP_CREATE(2)

NAME
     _lwp_create -- create a new light-weight process

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <lwp.h>

     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 ini-
     tial 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.  Other-
     wise, 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 exe-
               cution would be exceeded.  This limit is configuration-depen-
               dent.

     [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 NetBSD 2.0.

NetBSD 5.0_STABLE              January 13, 2003              NetBSD 5.0_STABLE
