 f14fb60209
			
		
	
	
		f14fb60209
		
	
	
	
	
		
			
			* Updating common/lib * Updating lib/csu * Updating lib/libc * Updating libexec/ld.elf_so * Corrected test on __minix in featuretest to actually follow the meaning of the comment. * Cleaned up _REENTRANT-related defintions. * Disabled -D_REENTRANT for libfetch * Removing some unneeded __NBSD_LIBC defines and tests Change-Id: Ic1394baef74d11b9f86b312f5ff4bbc3cbf72ce2
		
			
				
	
	
		
			108 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: _lwp_create.2,v 1.5 2012/05/21 14:15:16 martin Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 2003 The NetBSD Foundation, Inc.
 | |
| .\" All rights reserved.
 | |
| .\"
 | |
| .\" This code is derived from software contributed to The NetBSD Foundation
 | |
| .\" by Jason R. Thorpe of Wasabi Systems, Inc.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 | |
| .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 | |
| .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 | |
| .\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 | |
| .\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 | |
| .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 | |
| .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 | |
| .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 | |
| .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 | |
| .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 | |
| .\" POSSIBILITY OF SUCH DAMAGE.
 | |
| .\"
 | |
| .Dd January 13, 2003
 | |
| .Dt _LWP_CREATE 2
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm _lwp_create
 | |
| .Nd create a new light-weight process
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In lwp.h
 | |
| .Ft int
 | |
| .Fn _lwp_create "ucontext_t *context" "unsigned long flags" "lwpid_t *new_lwp"
 | |
| .Sh DESCRIPTION
 | |
| .Fn _lwp_create
 | |
| causes creation of a new light-weight process, or LWP, and adds it to the
 | |
| current process.
 | |
| The
 | |
| .Fa context
 | |
| argument specifies the initial execution context for the new LWP including
 | |
| signal mask, stack, and machine registers.
 | |
| If this context specifies invalid register values (for example priviledge
 | |
| escalation by setting machine dependend bits forbidden for user processes),
 | |
| or does not specify cpu register values (uc_flags does not have the
 | |
| _UC_CPU bit set), the call will fail and errno will be set to EINVAL.
 | |
| .Pp
 | |
| The following flags affect the creation of the new LWP:
 | |
| .Bl -tag -width LWP_SUSPENDED
 | |
| .It 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
 | |
| .Xr _lwp_wait 2 .
 | |
| .It LWP_SUSPENDED
 | |
| The LWP is created suspended, and will not begin execution until
 | |
| it is resumed by another LWP via
 | |
| .Xr _lwp_continue 2 .
 | |
| .\" __LWP_ASLWP is not yet implemented by the NetBSD kernel.
 | |
| .El
 | |
| .Pp
 | |
| The LWP ID of the new LWP is stored in the location pointed to by
 | |
| .Fa new_lwp .
 | |
| .Sh RETURN VALUES
 | |
| Upon successful completion,
 | |
| .Fn _lwp_create
 | |
| returns a value of 0.
 | |
| Otherwise, a value of -1 is returned and errno is set to one of the values
 | |
| documented below.
 | |
| .Sh ERRORS
 | |
| .Fn _lwp_create
 | |
| will fail and no LWP will be created if:
 | |
| .Bl -tag -width [EAGAIN]
 | |
| .It Bq Er EAGAIN
 | |
| The system-imposed limit on the total
 | |
| number of LWPs under execution would be exceeded.
 | |
| This limit is configuration-dependent.
 | |
| .It Bq Er ENOMEM
 | |
| There is insufficient swap space for the new LWP.
 | |
| .It Bq Er EFAULT
 | |
| The address pointed to by
 | |
| .Fa context
 | |
| or
 | |
| .Fa new_lwp
 | |
| is outside the process's allocated address space.
 | |
| .It Bq Er EINVAL
 | |
| The ucontext_t passed is invalid.
 | |
| .El
 | |
| .Sh SEE ALSO
 | |
| .Xr _lwp_continue 2 ,
 | |
| .Xr _lwp_exit 2 ,
 | |
| .Xr _lwp_wait 2 ,
 | |
| .Xr _lwp_makecontext 3
 | |
| .Sh HISTORY
 | |
| The
 | |
| .Fn _lwp_create
 | |
| system call first appeared in
 | |
| .Nx 2.0 .
 |