aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/sys/rfork.2
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libc/sys/rfork.2')
-rw-r--r--lib/libc/sys/rfork.2203
1 files changed, 0 insertions, 203 deletions
diff --git a/lib/libc/sys/rfork.2 b/lib/libc/sys/rfork.2
deleted file mode 100644
index 649b2acae6ce..000000000000
--- a/lib/libc/sys/rfork.2
+++ /dev/null
@@ -1,203 +0,0 @@
-.\"
-.\" This manual page is taken directly from Plan9, and modified to
-.\" describe the actual BSD implementation. Permission for
-.\" use of this page comes from Rob Pike <rob@plan9.att.com>.
-.\"
-.Dd September 25, 2019
-.Dt RFORK 2
-.Os
-.Sh NAME
-.Nm rfork
-.Nd manipulate process resources
-.Sh LIBRARY
-.Lb libc
-.Sh SYNOPSIS
-.In unistd.h
-.Ft pid_t
-.Fn rfork "int flags"
-.Sh DESCRIPTION
-Forking, vforking or rforking are the only ways new processes are created.
-The
-.Fa flags
-argument to
-.Fn rfork
-selects which resources of the
-invoking process (parent) are shared
-by the new process (child) or initialized to
-their default values.
-The resources include
-the open file descriptor table (which, when shared, permits processes
-to open and close files for other processes),
-and open files.
-The
-.Fa flags
-argument
-is either
-.Dv RFSPAWN
-or the logical OR of some subset of:
-.Bl -tag -width ".Dv RFLINUXTHPN"
-.It Dv RFPROC
-If set a new process is created; otherwise changes affect the
-current process.
-.It Dv RFNOWAIT
-If set, the child process will be dissociated from the parent.
-Upon
-exit the child will not leave a status for the parent to collect.
-See
-.Xr wait 2 .
-.It Dv RFFDG
-If set, the invoker's file descriptor table (see
-.Xr intro 2 )
-is copied; otherwise the two processes share a
-single table.
-.It Dv RFCFDG
-If set, the new process starts with a clean file descriptor table.
-Is mutually exclusive with
-.Dv RFFDG .
-.It Dv RFTHREAD
-If set, the new process shares file descriptor to process leaders table
-with its parent.
-Only applies when neither
-.Dv RFFDG
-nor
-.Dv RFCFDG
-are set.
-.It Dv RFMEM
-If set, the kernel will force sharing of the entire address space,
-typically by sharing the hardware page table directly.
-The child
-will thus inherit and share all the segments the parent process owns,
-whether they are normally shareable or not.
-The stack segment is
-not split (both the parent and child return on the same stack) and thus
-.Fn rfork
-with the RFMEM flag may not generally be called directly from high level
-languages including C.
-May be set only with
-.Dv RFPROC .
-A helper function is provided to assist with this problem and will cause
-the new process to run on the provided stack.
-See
-.Xr rfork_thread 3
-for information.
-Note that a lot of code will not run correctly in such an environment.
-.It Dv RFSIGSHARE
-If set, the kernel will force sharing the sigacts structure between the
-child and the parent.
-.It Dv RFTSIGZMB
-If set, the kernel will deliver a specified signal to the parent
-upon the child exit, instead of default SIGCHLD.
-The signal number
-.Dv signum
-is specified by oring the
-.Dv RFTSIGFLAGS(signum)
-expression into
-.Fa flags .
-Specifying signal number 0 disables signal delivery upon the child exit.
-.It Dv RFLINUXTHPN
-If set, the kernel will deliver SIGUSR1 instead of SIGCHLD upon thread
-exit for the child.
-This is intended to mimic certain Linux clone behaviour.
-.El
-.Pp
-File descriptors in a shared file descriptor table are kept
-open until either they are explicitly closed
-or all processes sharing the table exit.
-.Pp
-If
-.Dv RFSPAWN
-is passed,
-.Nm
-will use
-.Xr vfork 2
-semantics but reset all signal actions in the child to default.
-This flag is used by the
-.Xr posix_spawn 3
-implementation in libc.
-.Pp
-If
-.Dv RFPROC
-is set, the
-value returned in the parent process
-is the process id
-of the child process; the value returned in the child is zero.
-Without
-.Dv RFPROC ,
-the return value is zero.
-Process id's range from 1 to the maximum integer
-.Ft ( int )
-value.
-The
-.Fn rfork
-system call
-will sleep, if necessary, until required process resources are available.
-.Pp
-The
-.Fn fork
-system call
-can be implemented as a call to
-.Fn rfork "RFFDG | RFPROC"
-but is not for backwards compatibility.
-.Sh RETURN VALUES
-Upon successful completion,
-.Fn rfork
-returns a value
-of 0 to the child process and returns the process ID of the child
-process to the parent process.
-Otherwise, a value of -1 is returned
-to the parent process, no child process is created, and the global
-variable
-.Va errno
-is set to indicate the error.
-.Sh ERRORS
-The
-.Fn rfork
-system call
-will fail and no child process will be created if:
-.Bl -tag -width Er
-.It Bq Er EAGAIN
-The system-imposed limit on the total
-number of processes under execution would be exceeded.
-The limit is given by the
-.Xr sysctl 3
-MIB variable
-.Dv KERN_MAXPROC .
-(The limit is actually ten less than this
-except for the super user).
-.It Bq Er EAGAIN
-The user is not the super user, and
-the system-imposed limit
-on the total number of
-processes under execution by a single user would be exceeded.
-The limit is given by the
-.Xr sysctl 3
-MIB variable
-.Dv KERN_MAXPROCPERUID .
-.It Bq Er EAGAIN
-The user is not the super user, and
-the soft resource limit corresponding to the
-.Fa resource
-argument
-.Dv RLIMIT_NOFILE
-would be exceeded (see
-.Xr getrlimit 2 ) .
-.It Bq Er EINVAL
-Both the RFFDG and the RFCFDG flags were specified.
-.It Bq Er EINVAL
-Any flags not listed above were specified.
-.It Bq Er EINVAL
-An invalid signal number was specified.
-.It Bq Er ENOMEM
-There is insufficient swap space for the new process.
-.El
-.Sh SEE ALSO
-.Xr fork 2 ,
-.Xr intro 2 ,
-.Xr minherit 2 ,
-.Xr vfork 2 ,
-.Xr pthread_create 3 ,
-.Xr rfork_thread 3
-.Sh HISTORY
-The
-.Fn rfork
-function first appeared in Plan9.