| .\" 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 2021-03-22 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| socketcall \- socket system calls |
| .SH SYNOPSIS |
| .nf |
| .B #include <linux/net.h> |
| .PP |
| .BI "int socketcall(int " call ", unsigned long *" args ); |
| .fi |
| .PP |
| .IR Note : |
| There is no glibc wrapper for this system call; see NOTES. |
| .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 |
| Glibc does not provide a wrapper for this system call; |
| in the unlikely event that you want to call it directly, do so using |
| .BR syscall (2). |
| .PP |
| On 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) |