1*cdecda8dSBrooks Davis.\" 2*cdecda8dSBrooks Davis.\" Copyright (c) 2000 Peter Wemm <peter@FreeBSD.org> 3*cdecda8dSBrooks Davis.\" All rights reserved. 4*cdecda8dSBrooks Davis.\" 5*cdecda8dSBrooks Davis.\" Redistribution and use in source and binary forms, with or without 6*cdecda8dSBrooks Davis.\" modification, are permitted provided that the following conditions 7*cdecda8dSBrooks Davis.\" are met: 8*cdecda8dSBrooks Davis.\" 1. Redistributions of source code must retain the above copyright 9*cdecda8dSBrooks Davis.\" notice, this list of conditions and the following disclaimer. 10*cdecda8dSBrooks Davis.\" 2. Redistributions in binary form must reproduce the above copyright 11*cdecda8dSBrooks Davis.\" notice, this list of conditions and the following disclaimer in the 12*cdecda8dSBrooks Davis.\" documentation and/or other materials provided with the distribution. 13*cdecda8dSBrooks Davis.\" 14*cdecda8dSBrooks Davis.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*cdecda8dSBrooks Davis.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*cdecda8dSBrooks Davis.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*cdecda8dSBrooks Davis.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*cdecda8dSBrooks Davis.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*cdecda8dSBrooks Davis.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*cdecda8dSBrooks Davis.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*cdecda8dSBrooks Davis.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*cdecda8dSBrooks Davis.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*cdecda8dSBrooks Davis.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*cdecda8dSBrooks Davis.\" SUCH DAMAGE. 25*cdecda8dSBrooks Davis.\" 26*cdecda8dSBrooks Davis.Dd February 6, 2011 27*cdecda8dSBrooks Davis.Dt RFORK_THREAD 3 28*cdecda8dSBrooks Davis.Os 29*cdecda8dSBrooks Davis.Sh NAME 30*cdecda8dSBrooks Davis.Nm rfork_thread 31*cdecda8dSBrooks Davis.Nd create a rfork-based process thread 32*cdecda8dSBrooks Davis.Sh LIBRARY 33*cdecda8dSBrooks Davis.Lb libc 34*cdecda8dSBrooks Davis.Sh SYNOPSIS 35*cdecda8dSBrooks Davis.In unistd.h 36*cdecda8dSBrooks Davis.Ft pid_t 37*cdecda8dSBrooks Davis.Fn rfork_thread "int flags" "void *stack" "int (*func)(void *arg)" "void *arg" 38*cdecda8dSBrooks Davis.Sh DESCRIPTION 39*cdecda8dSBrooks Davis.Bf -symbolic 40*cdecda8dSBrooks DavisThe 41*cdecda8dSBrooks Davis.Fn rfork_thread 42*cdecda8dSBrooks Davisfunction has been deprecated in favor of 43*cdecda8dSBrooks Davis.Xr pthread_create 3 . 44*cdecda8dSBrooks Davis.Ef 45*cdecda8dSBrooks Davis.Pp 46*cdecda8dSBrooks DavisThe 47*cdecda8dSBrooks Davis.Fn rfork_thread 48*cdecda8dSBrooks Davisfunction 49*cdecda8dSBrooks Davisis a helper function for 50*cdecda8dSBrooks Davis.Xr rfork 2 . 51*cdecda8dSBrooks DavisIt arranges for a new process to be created and the child process will 52*cdecda8dSBrooks Daviscall the specified function with the specified argument, while running on 53*cdecda8dSBrooks Davisthe supplied stack. 54*cdecda8dSBrooks Davis.Pp 55*cdecda8dSBrooks DavisUsing this function should avoid the need to implement complex stack 56*cdecda8dSBrooks Davisswap code. 57*cdecda8dSBrooks Davis.Sh RETURN VALUES 58*cdecda8dSBrooks DavisUpon successful completion, 59*cdecda8dSBrooks Davis.Fn rfork_thread 60*cdecda8dSBrooks Davisreturns the process ID of the child process to the parent process. 61*cdecda8dSBrooks DavisOtherwise, a value of -1 is returned 62*cdecda8dSBrooks Davisto the parent process, no child process is created, and the global 63*cdecda8dSBrooks Davisvariable 64*cdecda8dSBrooks Davis.Va errno 65*cdecda8dSBrooks Davisis set to indicate the error. 66*cdecda8dSBrooks Davis.Pp 67*cdecda8dSBrooks DavisThe child process context is not aware of a return from the 68*cdecda8dSBrooks Davis.Fn rfork_thread 69*cdecda8dSBrooks Davisfunction as it begins executing directly with the supplied function. 70*cdecda8dSBrooks Davis.Sh ERRORS 71*cdecda8dSBrooks DavisSee 72*cdecda8dSBrooks Davis.Xr rfork 2 73*cdecda8dSBrooks Davisfor error return codes. 74*cdecda8dSBrooks Davis.Sh SEE ALSO 75*cdecda8dSBrooks Davis.Xr fork 2 , 76*cdecda8dSBrooks Davis.Xr intro 2 , 77*cdecda8dSBrooks Davis.Xr minherit 2 , 78*cdecda8dSBrooks Davis.Xr rfork 2 , 79*cdecda8dSBrooks Davis.Xr vfork 2 , 80*cdecda8dSBrooks Davis.Xr pthread_create 3 81*cdecda8dSBrooks Davis.Sh HISTORY 82*cdecda8dSBrooks DavisThe 83*cdecda8dSBrooks Davis.Fn rfork_thread 84*cdecda8dSBrooks Davisfunction first appeared in 85*cdecda8dSBrooks Davis.Fx 4.3 . 86