Start of man-pages-NEXT: Move Changes to Changes.old
[man-pages.git] / man2 / socketcall.2
blobd2382e7a265ecdc3ab88fd93f248d21db41bb030
1 .\" Copyright (c) 1995 Michael Chastain (mec@shell.portal.com), 15 April 1995.
2 .\"
3 .\" SPDX-License-Identifier: GPL-2.0-or-later
4 .\"
5 .\" Modified Tue Oct 22 22:11:53 1996 by Eric S. Raymond <esr@thyrsus.com>
6 .TH SOCKETCALL 2 2022-09-09 "Linux man-pages (unreleased)"
7 .SH NAME
8 socketcall \- socket system calls
9 .SH LIBRARY
10 Standard C library
11 .RI ( libc ", " \-lc )
12 .SH SYNOPSIS
13 .nf
14 .BR "#include <linux/net.h>" "        /* Definition of " SYS_* " constants */"
15 .BR "#include <sys/syscall.h>" "      /* Definition of " SYS_socketcall " */"
16 .B #include <unistd.h>
17 .PP
18 .BI "int syscall(SYS_socketcall, int " call ", unsigned long *" args );
19 .fi
20 .PP
21 .IR Note :
22 glibc provides no wrapper for
23 .BR socketcall (),
24 necessitating the use of
25 .BR syscall (2).
26 .SH DESCRIPTION
27 .BR socketcall ()
28 is a common kernel entry point for the socket system calls.
29 .I call
30 determines which socket function to invoke.
31 .I args
32 points to a block containing the actual arguments,
33 which are passed through to the appropriate call.
34 .PP
35 User programs should call the appropriate functions by their usual names.
36 Only standard library implementors and kernel hackers need to know about
37 .BR socketcall ().
38 .PP
39 .TS
40 tab(:);
41 l l.
42 \fIcall\fR:Man page
44 .B SYS_SOCKET
45 T}:T{
46 .BR socket (2)
49 .B SYS_BIND
50 T}:T{
51 .BR bind (2)
54 .B SYS_CONNECT
55 T}:T{
56 .BR connect (2)
59 .B SYS_LISTEN
60 T}:T{
61 .BR listen (2)
64 .B SYS_ACCEPT
65 T}:T{
66 .BR accept (2)
69 .B SYS_GETSOCKNAME
70 T}:T{
71 .BR getsockname (2)
74 .B SYS_GETPEERNAME
75 T}:T{
76 .BR getpeername (2)
79 .B SYS_SOCKETPAIR
80 T}:T{
81 .BR socketpair (2)
84 .B SYS_SEND
85 T}:T{
86 .BR send (2)
89 .B SYS_RECV
90 T}:T{
91 .BR recv (2)
94 .B SYS_SENDTO
95 T}:T{
96 .BR sendto (2)
99 .B SYS_RECVFROM
100 T}:T{
101 .BR recvfrom (2)
104 .B SYS_SHUTDOWN
105 T}:T{
106 .BR shutdown (2)
109 .B SYS_SETSOCKOPT
110 T}:T{
111 .BR setsockopt (2)
114 .B SYS_GETSOCKOPT
115 T}:T{
116 .BR getsockopt (2)
119 .B SYS_SENDMSG
120 T}:T{
121 .BR sendmsg (2)
124 .B SYS_RECVMSG
125 T}:T{
126 .BR recvmsg (2)
129 .B SYS_ACCEPT4
130 T}:T{
131 .BR accept4 (2)
134 .B SYS_RECVMMSG
135 T}:T{
136 .BR recvmmsg (2)
139 .B SYS_SENDMMSG
140 T}:T{
141 .BR sendmmsg (2)
144 .SH STANDARDS
145 This call is specific to Linux, and should not be used in programs
146 intended to be portable.
147 .SH NOTES
148 On some architectures\(emfor example, x86-64 and ARM\(emthere is no
149 .BR socketcall ()
150 system call; instead
151 .BR socket (2),
152 .BR accept (2),
153 .BR bind (2),
154 and so on really are implemented as separate system calls.
156 On x86-32,
157 .BR socketcall ()
158 was historically the only entry point for the sockets API.
159 However, starting in Linux 4.3,
160 .\" commit 9dea5dc921b5f4045a18c63eb92e84dc274d17eb
161 direct system calls are provided on x86-32 for the sockets API.
162 This facilitates the creation of
163 .BR seccomp (2)
164 filters that filter sockets system calls
165 (for new user-space binaries that are compiled
166 to use the new entry points)
167 and also provides a (very) small performance improvement.
168 .SH SEE ALSO
169 .BR accept (2),
170 .BR bind (2),
171 .BR connect (2),
172 .BR getpeername (2),
173 .BR getsockname (2),
174 .BR getsockopt (2),
175 .BR listen (2),
176 .BR recv (2),
177 .BR recvfrom (2),
178 .BR recvmsg (2),
179 .BR send (2),
180 .BR sendmsg (2),
181 .BR sendto (2),
182 .BR setsockopt (2),
183 .BR shutdown (2),
184 .BR socket (2),
185 .BR socketpair (2)