]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
manual: describe syscall numbers not supported via syscall()
authorYury Khrustalev <yury.khrustalev@arm.com>
Fri, 20 Jun 2025 12:37:34 +0000 (13:37 +0100)
committerYury Khrustalev <yury.khrustalev@arm.com>
Mon, 6 Oct 2025 15:48:07 +0000 (16:48 +0100)
The syscall() function allows to make system calls directly, however,
in the case of system calls that affect internal state of process or
thread, the caller would have to take care of extensive setup necessary
for the internals of Glibc to work correctly in the child threads. This
may make using syscall() with these syscall numbers impractical and
prone to undefined behaviour.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
manual/startup.texi

index 9545fcc5263f21c8e88dcdb1e1e38b4f69143ce2..11fe58c5a682633b7c06d0c697356c8d52aa7a60 100644 (file)
@@ -737,6 +737,12 @@ anyway.
 @code{syscall} does not provide cancellation logic, even if the system
 call you're calling is listed as cancellable above.
 
+Using @code{syscall} with system calls that affect the internal state of
+process of thread will likely result in undefined behavior. For this reason,
+at least the following system call numbers are not supported when invoked via
+@code{syscall}: @code{SYS_clone}, @code{SYS_clone2}, @code{SYS_clone3},
+@code{SYS_rt_sigreturn}, @code{SYS_sigreturn}, @code{SYS_vfork}.
+
 @code{syscall} is declared in @file{unistd.h}.
 
 @deftypefun {long int} syscall (long int @var{sysno}, @dots{})
@@ -804,7 +810,6 @@ if (rc == -1)
 
 @end deftypefun
 
-
 @node Program Termination
 @section Program Termination
 @cindex program termination