.\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 1995.
.\"
.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" <http://www.gnu.org/licenses/>.
.\" %%%LICENSE_END
.\"
.\" Modified Tue Oct 22 22:11:53 1996 by Eric S. Raymond <esr@thyrsus.com>
.TH SOCKETCALL 2 2017-09-15 "Linux" "Linux Programmer's Manual"
.SH NAME
socketcall \- socket system calls
.SH SYNOPSIS
.B #include <linux/net.h>
.PP
.BI "int socketcall(int " call ", unsigned long *" args );
.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.
.PP
User programs should call the appropriate functions by their usual names.
Only standard library implementors and kernel hackers need to know about
.BR socketcall ().
.PP
.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 CONFORMING TO
This call is specific to Linux, and should not be used in programs
intended to be portable.
.SH NOTES
On a some architectures\(emfor example, x86-64 and ARM\(emthere 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.
.PP
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)
