summaryrefslogtreecommitdiffstats
path: root/man/man2/socketcall.2
diff options
context:
space:
mode:
Diffstat (limited to 'man/man2/socketcall.2')
-rw-r--r--man/man2/socketcall.2185
1 files changed, 185 insertions, 0 deletions
diff --git a/man/man2/socketcall.2 b/man/man2/socketcall.2
new file mode 100644
index 0000000..aa52f90
--- /dev/null
+++ b/man/man2/socketcall.2
@@ -0,0 +1,185 @@
+'\" t
+.\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 1995.
+.\"
+.\" SPDX-License-Identifier: GPL-2.0-or-later
+.\"
+.\" Modified Tue Oct 22 22:11:53 1996 by Eric S. Raymond <esr@thyrsus.com>
+.TH socketcall 2 2024-05-02 "Linux man-pages (unreleased)"
+.SH NAME
+socketcall \- socket system calls
+.SH LIBRARY
+Standard C library
+.RI ( libc ", " \-lc )
+.SH SYNOPSIS
+.nf
+.BR "#include <linux/net.h>" " /* Definition of " SYS_* " constants */"
+.BR "#include <sys/syscall.h>" " /* Definition of " SYS_socketcall " */"
+.B #include <unistd.h>
+.P
+.BI "int syscall(SYS_socketcall, int " call ", unsigned long *" args );
+.fi
+.P
+.IR Note :
+glibc provides no wrapper for
+.BR socketcall (),
+necessitating the use of
+.BR syscall (2).
+.SH DESCRIPTION
+.BR socketcall ()
+is a common kernel entry point for the socket system calls.
+.I call
+determines which socket function to invoke.
+.I args
+points to a block containing the actual arguments,
+which are passed through to the appropriate call.
+.P
+User programs should call the appropriate functions by their usual names.
+Only standard library implementors and kernel hackers need to know about
+.BR socketcall ().
+.P
+.TS
+tab(:);
+l l.
+\fIcall\fR:Man page
+T{
+.B SYS_SOCKET
+T}:T{
+.BR socket (2)
+T}
+T{
+.B SYS_BIND
+T}:T{
+.BR bind (2)
+T}
+T{
+.B SYS_CONNECT
+T}:T{
+.BR connect (2)
+T}
+T{
+.B SYS_LISTEN
+T}:T{
+.BR listen (2)
+T}
+T{
+.B SYS_ACCEPT
+T}:T{
+.BR accept (2)
+T}
+T{
+.B SYS_GETSOCKNAME
+T}:T{
+.BR getsockname (2)
+T}
+T{
+.B SYS_GETPEERNAME
+T}:T{
+.BR getpeername (2)
+T}
+T{
+.B SYS_SOCKETPAIR
+T}:T{
+.BR socketpair (2)
+T}
+T{
+.B SYS_SEND
+T}:T{
+.BR send (2)
+T}
+T{
+.B SYS_RECV
+T}:T{
+.BR recv (2)
+T}
+T{
+.B SYS_SENDTO
+T}:T{
+.BR sendto (2)
+T}
+T{
+.B SYS_RECVFROM
+T}:T{
+.BR recvfrom (2)
+T}
+T{
+.B SYS_SHUTDOWN
+T}:T{
+.BR shutdown (2)
+T}
+T{
+.B SYS_SETSOCKOPT
+T}:T{
+.BR setsockopt (2)
+T}
+T{
+.B SYS_GETSOCKOPT
+T}:T{
+.BR getsockopt (2)
+T}
+T{
+.B SYS_SENDMSG
+T}:T{
+.BR sendmsg (2)
+T}
+T{
+.B SYS_RECVMSG
+T}:T{
+.BR recvmsg (2)
+T}
+T{
+.B SYS_ACCEPT4
+T}:T{
+.BR accept4 (2)
+T}
+T{
+.B SYS_RECVMMSG
+T}:T{
+.BR recvmmsg (2)
+T}
+T{
+.B SYS_SENDMMSG
+T}:T{
+.BR sendmmsg (2)
+T}
+.TE
+.SH VERSIONS
+On some architectures\[em]for example, x86-64 and ARM\[em]there is no
+.BR socketcall ()
+system call; instead
+.BR socket (2),
+.BR accept (2),
+.BR bind (2),
+and so on really are implemented as separate system calls.
+.SH STANDARDS
+Linux.
+.P
+On x86-32,
+.BR socketcall ()
+was historically the only entry point for the sockets API.
+However, starting in Linux 4.3,
+.\" commit 9dea5dc921b5f4045a18c63eb92e84dc274d17eb
+direct system calls are provided on x86-32 for the sockets API.
+This facilitates the creation of
+.BR seccomp (2)
+filters that filter sockets system calls
+(for new user-space binaries that are compiled
+to use the new entry points)
+and also provides a (very) small performance improvement.
+.SH SEE ALSO
+.BR accept (2),
+.BR bind (2),
+.BR connect (2),
+.BR getpeername (2),
+.BR getsockname (2),
+.BR getsockopt (2),
+.BR listen (2),
+.BR recv (2),
+.BR recvfrom (2),
+.BR recvmsg (2),
+.BR send (2),
+.BR sendmsg (2),
+.BR sendto (2),
+.BR setsockopt (2),
+.BR shutdown (2),
+.BR socket (2),
+.BR socketpair (2)