xref: /freebsd/lib/libsys/rfork_thread.3 (revision cdecda8da32b67f2be34a4d2ea37f90986a45a00)
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