clone.2: Use syscall(SYS_...); for system calls without a wrapper

The CLONE_* constants seem to be available from either
<linux/sched.h> or <sched.h>, and since clone3() already
includes <linux/sched.h> for 'struct clone_args', <sched.h>
is not really needed, AFAICS; however, to avoid confusion,
I also included <sched.h> for clone3() for consistency:

clone() is getting CLONE_* from <sched.h>, and it would confuse
the reader if clone3() got the same CLONE_* constants from a
different header.

Signed-off-by: Alejandro Colomar <alx.manpages@gmail.com>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Alejandro Colomar 2021-04-04 13:58:24 +02:00 committed by Michael Kerrisk
parent 74ddb3019f
commit a380538369
1 changed files with 6 additions and 11 deletions

View File

@ -56,13 +56,13 @@ clone, __clone2, clone3 \- create a child process
.PP
/* For the prototype of the raw clone() system call, see NOTES */
.PP
.BI "long clone3(struct clone_args *" cl_args ", size_t " size );
.fi
.BR "#include <linux/sched.h>" " /* Definition of " "struct clone_args" " */"
.BR "#include <sched.h>" " /* Definition of " CLONE_* " constants */"
.BR "#include <sys/syscall.h>" " /* Definition of " SYS_* " constants */"
.B #include <unistd.h>
.PP
.IR Note :
There is no glibc wrapper for
.BR clone3 ();
see NOTES.
.BI "long syscall(SYS_clone3, struct clone_args *" cl_args ", size_t " size );
.fi
.SH DESCRIPTION
These system calls
create a new ("child") process, in a manner similar to
@ -1541,11 +1541,6 @@ One use of these systems calls
is to implement threads: multiple flows of control in a program that
run concurrently in a shared address space.
.PP
Glibc does not provide a wrapper for
.BR clone3 ();
call it using
.BR syscall (2).
.PP
Note that the glibc
.BR clone ()
wrapper function makes some changes