]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man2/syscalls.2
inotify.7: Minor clarification
[thirdparty/man-pages.git] / man2 / syscalls.2
CommitLineData
c11b1abf 1.\" Copyright (C) 2007 Michael Kerrisk <mtk.manpages@gmail.com>
09de4bf1
MK
2.\" with some input from Stepan Kasal <kasal@ucw.cz>
3.\"
4.\" Some content retained from an earlier version of this page:
fea681da
MK
5.\" Copyright (C) 1998 Andries Brouwer (aeb@cwi.nl)
6.\" Modifications for 2.2 and 2.4 Copyright (C) 2002 Ian Redfern
7.\" <redferni@logica.com>
8.\"
93015253 9.\" %%%LICENSE_START(VERBATIM)
fea681da
MK
10.\" Permission is granted to make and distribute verbatim copies of this
11.\" manual provided the copyright notice and this permission notice are
12.\" preserved on all copies.
13.\"
14.\" Permission is granted to copy and distribute modified versions of this
15.\" manual under the conditions for verbatim copying, provided that the
16.\" entire resulting derived work is distributed under the terms of a
17.\" permission notice identical to this one.
18.\"
19.\" Since the Linux kernel and libraries are constantly changing, this
20.\" manual page may be incorrect or out-of-date. The author(s) assume no
21.\" responsibility for errors or omissions, or for damages resulting from
22.\" the use of the information contained herein. The author(s) may not
23.\" have taken the same level of care in the production of this manual,
24.\" which is licensed free of charge, as they might when working
25.\" professionally.
26.\"
27.\" Formatted or processed versions of this manual, if unaccompanied by
28.\" the source, must acknowledge the copyright and authors of this work.
4b72fb64 29.\" %%%LICENSE_END
fea681da 30.\"
b73bf0ae 31.TH SYSCALLS 2 2014-02-20 "Linux" "Linux Programmer's Manual"
fea681da 32.SH NAME
09de4bf1 33syscalls \- Linux system calls
fea681da 34.SH SYNOPSIS
09de4bf1 35Linux system calls.
fea681da
MK
36.SH DESCRIPTION
37The system call is the fundamental interface between an application
c13182ef 38and the Linux kernel.
7d50a840
MK
39.SS System calls and library wrapper functions
40System calls are generally not invoked directly,
61d7d93c
MK
41but rather via wrapper functions in glibc (or perhaps some other library).
42For details of direct invocation of a system call, see
43.BR intro (2).
7d50a840
MK
44Often, but not always, the name of the wrapper function is the same
45as the name of the system call that it invokes.
46For example, glibc contains a function
47.BR truncate ()
48which invokes the underlying "truncate" system call.
fea681da 49
7d50a840 50Often the glibc wrapper function is quite thin, doing little work
c8bd05f9
MK
51other than copying arguments to the right registers
52before invoking the system call,
53and then setting
54.I errno
55appropriately after the system call has returned.
56(These are the same steps that are performed by
57.BR syscall (2),
58which can be used to invoke system calls
59for which no wrapper function is provided.)
60Note: system calls indicate a failure by returning a negative error
61number to the caller;
62when this happens,
63the wrapper function negates the returned error number
64(to make it positive), copies it to
65.IR errno ,
66and returns \-1 to the caller of the wrapper.
7d50a840
MK
67
68Sometimes, however, the wrapper function does some extra work
69before invoking the system call.
70For example, nowadays there are (for reasons described below) two
71related system calls,
72.BR truncate (2)
73and
74.BR truncate64 (2),
75and the glibc
76.BR truncate ()
61d7d93c
MK
77wrapper function checks which of those system calls
78are provided by the kernel and determines which should be employed.
7d50a840 79.SS System call list
1ce7088e 80Below is a list of the Linux system calls.
09de4bf1
MK
81In the list, the
82.I Kernel
83column indicates the kernel version
84for those system calls that were new in Linux 2.2,
85or have appeared since that kernel version.
86Note the following points:
87.IP * 3
88Where no kernel version is indicated,
dc2f5549
MK
89the system call appeared in kernel 1.0 or earlier.
90.IP *
91Where a system call is marked "1.2"
92this means the system call probably appeared in a 1.1.x kernel version,
93and first appeared in a stable kernel with 1.2.
94(Development of the 1.2 kernel was initiated from a branch of kernel
951.0.6 via the 1.1.x unstable kernel series.)
96.IP *
97Where a system call is marked "2.0"
98this means the system call probably appeared in a 1.3.x kernel version,
99and first appeared in a stable kernel with 2.0.
100(Development of the 2.0 kernel was initiated from a branch of kernel
1011.2.x, somewhere around 1.2.10,
102via the 1.3.x unstable kernel series.)
d6ce4960
MK
103.\" Was kernel 2.0 started from a branch of 1.2.10?
104.\" At least from the timestamps of the tarballs of
105.\" of 1.2.10 and 1.3.0, that's how it looks, but in
e0bf9127 106.\" fact the diff doesn't seem very clear, the
d6ce4960
MK
107.\" 1.3.0 .tar.bz is much bigger (2.0 MB) than the
108.\" 1.2.10 .tar.bz2 (1.8 MB), and AEB points out the
109.\" timestamps of some files in 1.3.0 seem to be older
110.\" than those in 1.2.10. All of this suggests
111.\" that there might not have been a clean branch point.
09de4bf1
MK
112.IP *
113Where a system call is marked "2.2"
114this means the system call probably appeared in a 2.1.x kernel version,
115and first appeared in a stable kernel with 2.2.0.
f9e4d811
MK
116(Development of the 2.2 kernel was initiated from a branch of kernel
1172.0.21 via the 2.1.x unstable kernel series.)
09de4bf1
MK
118.IP *
119Where a system call is marked "2.4"
120this means the system call probably appeared in a 2.3.x kernel version,
121and first appeared in a stable kernel with 2.4.0.
f9e4d811
MK
122(Development of the 2.4 kernel was initiated from a branch of
123kernel 2.2.8 via the 2.3.x unstable kernel series.)
09de4bf1
MK
124.IP *
125Where a system call is marked "2.6"
126this means the system call probably appeared in a 2.5.x kernel version,
127and first appeared in a stable kernel with 2.6.0.
f9e4d811
MK
128(Development of kernel 2.6 was initiated from a branch
129of kernel 2.4.15 via the 2.5.x unstable kernel series.)
09de4bf1
MK
130.IP *
131Starting with kernel 2.6.0, the development model changed,
132and new system calls may appear in each 2.6.x release.
f9e4d811
MK
133In this case, the exact version number where the system call appeared
134is shown.
c39f51b0
MK
135This convention continues with the 3.x kernel series,
136which followed on from kernel 2.6.39.
f9e4d811
MK
137.IP *
138In some cases, a system call was added to a stable kernel
139series after it branched from the previous stable kernel
140series, and then backported into the earlier stable kernel series.
141For example some system calls that appeared in 2.6.x were also backported
142into a 2.4.x release after 2.4.15.
143When this is so, the version where the system call appeared
09de4bf1 144in both of the major kernel series is listed.
09de4bf1 145.PP
677c7a2f 146The list of system calls that are available as at kernel 3.9
09de4bf1
MK
147(or in a few cases only on older kernels) is as follows:
148.\"
149.\" Looking at scripts/checksyscalls.sh in the kernel source is
929f1ff7 150.\" instructive about x86 specifics.
09de4bf1 151.\"
56f2caff 152.ad l
09de4bf1 153.TS
7d50a840
MK
154l l l
155---
09de4bf1 156l l l.
e2f9e1be 157\fBSystem call\fP \fBKernel\fP \fBNotes\fP
3fffa7b6 158
dc2f5549 159\fB_llseek\fP(2) 1.2
8717e79e
MK
160\fB_newselect\fP(2) 2.0
161\fB_sysctl\fP(2) 2.0
162\fBaccept\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
53e819d0 163\fBaccept4\fP(2) 2.6.28
8717e79e
MK
164\fBaccess\fP(2) 1.0
165\fBacct\fP(2) 1.0
09de4bf1 166\fBadd_key\fP(2) 2.6.11
8717e79e
MK
167\fBadjtimex\fP(2) 1.0
168\fBalarm\fP(2) 1.0
f9e4d811 169\fBalloc_hugepages\fP(2) 2.5.36 Removed in 2.5.44
8717e79e 170\fBbdflush\fP(2) 1.2 T{
b6bc918e
MK
171Deprecated (does nothing)
172.br
173since 2.6
56f2caff 174T}
8717e79e
MK
175\fBbind\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
176\fBbrk\fP(2) 1.0
929f1ff7 177\fBcacheflush\fP(2) 1.2 Not on x86
09de4bf1
MK
178\fBcapget\fP(2) 2.2
179\fBcapset\fP(2) 2.2
8717e79e
MK
180\fBchdir\fP(2) 1.0
181\fBchmod\fP(2) 1.0
182\fBchown\fP(2) 2.2 T{
b6bc918e
MK
183See \fBchown\fP(2) for
184.br
185version details
8717e79e 186T}
09de4bf1 187\fBchown32\fP(2) 2.4
8717e79e 188\fBchroot\fP(2) 1.0
b9cad55b 189\fBclock_adjtime\fP(2) 2.6.39
09de4bf1
MK
190\fBclock_getres\fP(2) 2.6
191\fBclock_gettime\fP(2) 2.6
192\fBclock_nanosleep\fP(2) 2.6
193\fBclock_settime\fP(2) 2.6
8717e79e
MK
194\fBclone\fP(2) 1.0
195\fBclose\fP(2) 1.0
196\fBconnect\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
197\fBcreat\fP(2) 1.0
56f2caff 198\fBcreate_module\fP(2) Removed in 2.6
8717e79e
MK
199\fBdelete_module\fP(2) 1.0
200\fBdup\fP(2) 1.0
201\fBdup2\fP(2) 1.0
eb153420 202\fBdup3\fP(2) 2.6.27
09de4bf1 203\fBepoll_create\fP(2) 2.6
eb153420 204\fBepoll_create1\fP(2) 2.6.27
09de4bf1
MK
205\fBepoll_ctl\fP(2) 2.6
206\fBepoll_pwait\fP(2) 2.6.19
207\fBepoll_wait\fP(2) 2.6
208\fBeventfd\fP(2) 2.6.22
eb153420 209\fBeventfd2\fP(2) 2.6.27
8717e79e
MK
210\fBexecve\fP(2) 1.0
211\fBexit\fP(2) 1.0
30fa088c 212\fBexit_group\fP(2) 2.6
09de4bf1 213\fBfaccessat\fP(2) 2.6.16
7d50a840
MK
214\fBfadvise64\fP(2) 2.6
215.\" Implements \fBposix_fadvise\fP(2)
216\fBfadvise64_64\fP(2) 2.6
6397da8c 217\fBfallocate\fP(2) 2.6.23
3610ae93
MK
218\fBfanotify_init\fP(2) 2.6.37
219\fBfanotify_mark\fP(2) 2.6.37
220.\" The fanotify calls were added in Linux 2.6.36,
221.\" but disabled while the API was finalized.
8717e79e
MK
222\fBfchdir\fP(2) 1.0
223\fBfchmod\fP(2) 1.0
09de4bf1 224\fBfchmodat\fP(2) 2.6.16
8717e79e 225\fBfchown\fP(2) 1.0
09de4bf1
MK
226\fBfchown32\fP(2) 2.4
227\fBfchownat\fP(2) 2.6.16
8717e79e 228\fBfcntl\fP(2) 1.0
09de4bf1 229\fBfcntl64\fP(2) 2.4
8717e79e 230\fBfdatasync\fP(2) 2.0
09de4bf1 231\fBfgetxattr\fP(2) 2.6; 2.4.18
ecbb4bb7 232\fBfinit_module\fP(2) 3.8
09de4bf1 233\fBflistxattr\fP(2) 2.6; 2.4.18
dc2f5549 234\fBflock\fP(2) 2.0
8717e79e 235\fBfork\fP(2) 1.0
f9e4d811 236\fBfree_hugepages\fP(2) 2.5.36 Removed in 2.5.44
09de4bf1
MK
237\fBfremovexattr\fP(2) 2.6; 2.4.18
238\fBfsetxattr\fP(2) 2.6; 2.4.18
8717e79e 239\fBfstat\fP(2) 1.0
09de4bf1 240\fBfstat64\fP(2) 2.4
f6b8bc07 241\fBfstatat64\fP(2) 2.6.16
8717e79e 242\fBfstatfs\fP(2) 1.0
09de4bf1 243\fBfstatfs64\fP(2) 2.6
8717e79e
MK
244\fBfsync\fP(2) 1.0 1.0
245\fBftruncate\fP(2) 1.0
09de4bf1 246\fBftruncate64\fP(2) 2.4
30fa088c 247\fBfutex\fP(2) 2.6
09de4bf1 248\fBfutimesat\fP(2) 2.6.16
56f2caff 249\fBget_kernel_syms\fP(2) Removed in 2.6
09de4bf1
MK
250\fBget_mempolicy\fP(2) 2.6.6
251\fBget_robust_list\fP(2) 2.6.17
30fa088c 252\fBget_thread_area\fP(2) 2.6
09de4bf1
MK
253\fBgetcpu\fP(2) 2.6.19
254\fBgetcwd\fP(2) 2.2
dc2f5549 255\fBgetdents\fP(2) 2.0
09de4bf1 256\fBgetdents64\fP(2) 2.4
8717e79e 257\fBgetegid\fP(2) 1.0
09de4bf1 258\fBgetegid32\fP(2) 2.4
8717e79e 259\fBgeteuid\fP(2) 1.0
09de4bf1 260\fBgeteuid32\fP(2) 2.4
8717e79e 261\fBgetgid\fP(2) 1.0
09de4bf1 262\fBgetgid32\fP(2) 2.4
8717e79e 263\fBgetgroups\fP(2) 1.0
09de4bf1 264\fBgetgroups32\fP(2) 2.4
8717e79e
MK
265\fBgetitimer\fP(2) 1.0
266\fBgetpeername\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
929f1ff7 267\fBgetpagesize\fP(2) 2.0 Not on x86
8717e79e
MK
268\fBgetpgid\fP(2) 1.0
269\fBgetpgrp\fP(2) 1.0
270\fBgetpid\fP(2) 1.0
271\fBgetppid\fP(2) 1.0
272\fBgetpriority\fP(2) 1.0
09de4bf1
MK
273\fBgetresgid\fP(2) 2.2
274\fBgetresgid32\fP(2) 2.4
275\fBgetresuid\fP(2) 2.2
276\fBgetresuid32\fP(2) 2.4
8717e79e
MK
277\fBgetrlimit\fP(2) 1.0
278\fBgetrusage\fP(2) 1.0
dc2f5549 279\fBgetsid\fP(2) 2.0
8717e79e
MK
280\fBgetsockname\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
281\fBgetsockopt\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
09de4bf1 282\fBgettid\fP(2) 2.4.11
8717e79e
MK
283\fBgettimeofday\fP(2) 1.0
284\fBgetuid\fP(2) 1.0
09de4bf1 285\fBgetuid32\fP(2) 2.4
018991f6 286.\" \fBgetunwind\fP(2) 2.4.8 ia64; DEPRECATED
09de4bf1 287\fBgetxattr\fP(2) 2.6; 2.4.18
8717e79e 288\fBinit_module\fP(2) 1.0
09de4bf1
MK
289\fBinotify_add_watch\fP(2) 2.6.13
290\fBinotify_init\fP(2) 2.6.13
eb153420 291\fBinotify_init1\fP(2) 2.6.27
09de4bf1 292\fBinotify_rm_watch\fP(2) 2.6.13
30fa088c
MK
293\fBio_cancel\fP(2) 2.6
294\fBio_destroy\fP(2) 2.6
295\fBio_getevents\fP(2) 2.6
296\fBio_setup\fP(2) 2.6
297\fBio_submit\fP(2) 2.6
8717e79e
MK
298\fBioctl\fP(2) 1.0
299\fBioperm\fP(2) 1.0
300\fBiopl\fP(2) 1.0
09de4bf1
MK
301\fBioprio_get\fP(2) 2.6.13
302\fBioprio_set\fP(2) 2.6.13
8717e79e 303\fBipc\fP(2) 1.0
7d50a840 304.\" Implements System V IPC calls
8eec4a23 305\fBkcmp\fP(2) 3.5
29cb9035 306\fBkern_features\fP(2) 3.7 Sparc64
3ed3a507
MK
307\fBkexec_load\fP(2) 2.6.13
308.\" The entry in the syscall table was reserved starting in 2.6.7
7d50a840 309.\" Was named sys_kexec_load() from 2.6.7 to 2.6.16
09de4bf1 310\fBkeyctl\fP(2) 2.6.11
8717e79e
MK
311\fBkill\fP(2) 1.0
312\fBlchown\fP(2) 1.0 T{
b6bc918e
MK
313See \fBchown\fP(2) for
314.br
315version details
8717e79e 316T}
09de4bf1
MK
317\fBlchown32\fP(2) 2.4
318\fBlgetxattr\fP(2) 2.6; 2.4.18
8717e79e 319\fBlink\fP(2) 1.0
09de4bf1 320\fBlinkat\fP(2) 2.6.16
8717e79e 321\fBlisten\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
09de4bf1
MK
322\fBlistxattr\fP(2) 2.6; 2.4.18
323\fBllistxattr\fP(2) 2.6; 2.4.18
09de4bf1
MK
324\fBlookup_dcookie\fP(2) 2.6
325\fBlremovexattr\fP(2) 2.6; 2.4.18
8717e79e 326\fBlseek\fP(2) 1.0
09de4bf1 327\fBlsetxattr\fP(2) 2.6; 2.4.18
8717e79e 328\fBlstat\fP(2) 1.0
09de4bf1
MK
329\fBlstat64\fP(2) 2.4
330\fBmadvise\fP(2) 2.4
09de4bf1
MK
331\fBmbind\fP(2) 2.6.6
332.\" \fBmemory_ordering\fP(2) ??? Sparc64
333\fBmigrate_pages\fP(2) 2.6.16
334\fBmincore\fP(2) 2.4
8717e79e 335\fBmkdir\fP(2) 1.0
09de4bf1 336\fBmkdirat\fP(2) 2.6.16
8717e79e 337\fBmknod\fP(2) 1.0
09de4bf1 338\fBmknodat\fP(2) 2.6.16
8717e79e
MK
339\fBmlock\fP(2) 2.0
340\fBmlockall\fP(2) 2.0
341\fBmmap\fP(2) 1.0
09de4bf1 342\fBmmap2\fP(2) 2.4
8717e79e
MK
343\fBmodify_ldt\fP(2) 1.0
344\fBmount\fP(2) 1.0
09de4bf1 345\fBmove_pages\fP(2) 2.6.18
8717e79e 346\fBmprotect\fP(2) 1.0
7d50a840
MK
347\fBmq_getsetattr\fP(2) 2.6.6
348.\" Implements \fBmq_getattr\fP(3) and \fBmq_setattr\fP(3)
09de4bf1
MK
349\fBmq_notify\fP(2) 2.6.6
350\fBmq_open\fP(2) 2.6.6
351\fBmq_timedreceive\fP(2) 2.6.6
352\fBmq_timedsend\fP(2) 2.6.6
8717e79e 353\fBmq_unlink\fP(2) 2.6.6
dc2f5549 354\fBmremap\fP(2) 2.0
8717e79e
MK
355\fBmsgctl\fP(2) 2.0 See notes on \fBipc\fP(2)
356\fBmsgget\fP(2) 2.0 See notes on \fBipc\fP(2)
357\fBmsgrcv\fP(2) 2.0 See notes on \fBipc\fP(2)
358\fBmsgsnd\fP(2) 2.0 See notes on \fBipc\fP(2)
dc2f5549 359\fBmsync\fP(2) 2.0
af4c9a82
MK
360.\" \fBmultiplexer\fP(2) ?? __NR_multiplexer reserved on
361.\" PowerPC, but unimplemented?
8717e79e
MK
362\fBmunlock\fP(2) 2.0
363\fBmunlockall\fP(2) 2.0
364\fBmunmap\fP(2) 1.0
b9cad55b 365\fBname_to_handle_at\fP(2) 2.6.39
dc2f5549 366\fBnanosleep\fP(2) 2.0
18a97acf 367\fBnfsservctl\fP(2) 2.2 Removed in 3.1
8717e79e
MK
368\fBnice\fP(2) 1.0
369\fBoldfstat\fP(2) 1.0
370\fBoldlstat\fP(2) 1.0
371\fBoldolduname\fP(2) 1.0
372\fBoldstat\fP(2) 1.0
373\fBolduname\fP(2) 1.0
374\fBopen\fP(2) 1.0
b9cad55b 375\fBopen_by_handle_at\fP(2) 2.6.39
09de4bf1 376\fBopenat\fP(2) 2.6.16
8717e79e 377\fBpause\fP(2) 1.0
929f1ff7
MK
378\fBpciconfig_iobase\fP(2) 2.2.15; 2.4 Not on x86
379.\" Alpha, PowerPC, ARM; not x86
380\fBpciconfig_read\fP(2) 2.0.26; 2.2 Not on x86
381.\" , PowerPC, ARM; not x86
382\fBpciconfig_write\fP(2) 2.0.26; 2.2 Not on x86
383.\" , PowerPC, ARM; not x86
56f2caff 384\fBperf_event_open\fP(2) 2.6.31 T{
b6bc918e
MK
385Was called perf_counter_open()
386.br
387in 2.6.31; renamed in 2.6.32
56f2caff 388T}
dc2f5549 389\fBpersonality\fP(2) 1.2
7ddff6a4
MK
390\fBperfctr\fP(2) 2.2 Sparc; removed in 2.6.34
391.\" commit c7d5a0050773e98d1094eaa9f2a1a793fafac300 removed perfctr()
3d1761ac 392\fBperfmonctl\fP(2) 2.4 ia64
8717e79e 393\fBpipe\fP(2) 1.0
eb153420 394\fBpipe2\fP(2) 2.6.27
dc2f5549 395\fBpivot_root\fP(2) 2.4
8717e79e 396\fBpoll\fP(2) 2.0.36; 2.2
c071b8e0 397\fBppc_rtas\fP(2) PowerPC only
09de4bf1
MK
398\fBppoll\fP(2) 2.6.16
399\fBprctl\fP(2) 2.2
56f2caff 400\fBpread64\fP(2) T{
b6bc918e
MK
401Added as "pread" in 2.2;
402.br
403renamed "pread64" in 2.6
56f2caff 404T}
0877a26b 405\fBpreadv\fP(2) 2.6.30
940795c0 406\fBprlimit\fP(2) 2.6.36
f06f5014
DP
407\fBprocess_vm_readv\fP(2) 3.2
408\fBprocess_vm_writev\fP(2) 3.2
7d50a840
MK
409\fBpselect6\fP(2) 2.6.16
410.\" Implements \fBpselect\fP(2)
8717e79e 411\fBptrace\fP(2) 1.0
56f2caff 412\fBpwrite64\fP(2) T{
b6bc918e
MK
413Added as "pwrite" in 2.2;
414.br
415renamed "pwrite64" in 2.6
56f2caff 416T}
0877a26b 417\fBpwritev\fP(2) 2.6.30
13f66890 418\fBquery_module\fP(2) 2.2 Removed in 2.6
8717e79e
MK
419\fBquotactl\fP(2) 1.0
420\fBread\fP(2) 1.0
09de4bf1 421\fBreadahead\fP(2) 2.4.13
8717e79e 422\fBreaddir\fP(2) 1.0
7d50a840 423.\" Supersedes \fBgetdents\fP(2)
8717e79e 424\fBreadlink\fP(2) 1.0
09de4bf1 425\fBreadlinkat\fP(2) 2.6.16
dc2f5549 426\fBreadv\fP(2) 2.0
8717e79e
MK
427\fBreboot\fP(2) 1.0
428\fBrecv\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
429\fBrecvfrom\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
430\fBrecvmsg\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
285bf67e 431\fBrecvmmsg\fP(2) 2.6.33
09de4bf1
MK
432\fBremap_file_pages\fP(2) 2.6
433\fBremovexattr\fP(2) 2.6; 2.4.18
8717e79e 434\fBrename\fP(2) 1.0
09de4bf1
MK
435\fBrenameat\fP(2) 2.6.16
436\fBrequest_key\fP(2) 2.6.11
437\fBrestart_syscall\fP(2) 2.6
8717e79e 438\fBrmdir\fP(2) 1.0
09de4bf1
MK
439\fBrt_sigaction\fP(2) 2.2
440\fBrt_sigpending\fP(2) 2.2
441\fBrt_sigprocmask\fP(2) 2.2
7d50a840 442\fBrt_sigqueueinfo\fP(2) 2.2
09de4bf1
MK
443\fBrt_sigreturn\fP(2) 2.2
444\fBrt_sigsuspend\fP(2) 2.2
445\fBrt_sigtimedwait\fP(2) 2.2
285bf67e 446\fBrt_tgsigqueueinfo\fP(2) 2.6.31
993d1ce3 447\fBs390_runtime_instr\fP(2) 3.7 s390 only
dc2f5549
MK
448\fBsched_get_priority_max\fP(2) 2.0
449\fBsched_get_priority_min\fP(2) 2.0
30fa088c 450\fBsched_getaffinity\fP(2) 2.6
dc2f5549
MK
451\fBsched_getparam\fP(2) 2.0
452\fBsched_getscheduler\fP(2) 2.0
453\fBsched_rr_get_interval\fP(2) 2.0
30fa088c 454\fBsched_setaffinity\fP(2) 2.6
dc2f5549
MK
455\fBsched_setparam\fP(2) 2.0
456\fBsched_setscheduler\fP(2) 2.0
457\fBsched_yield\fP(2) 2.0
8717e79e
MK
458\fBselect\fP(2) 1.0
459\fBsemctl\fP(2) 2.0 See notes on \fBipc\fP(2)
460\fBsemget\fP(2) 2.0 See notes on \fBipc\fP(2)
461\fBsemop\fP(2) 2.0 See notes on \fBipc\fP(2)
09de4bf1 462\fBsemtimedop\fP(2) 2.6; 2.4.22
8717e79e 463\fBsend\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
09de4bf1
MK
464\fBsendfile\fP(2) 2.2
465\fBsendfile64\fP(2) 2.6; 2.4.19
3e55b0bd 466\fBsendmmsg\fP(2) 3.0
8717e79e
MK
467\fBsendmsg\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
468\fBsendto\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
09de4bf1
MK
469\fBset_mempolicy\fP(2) 2.6.6
470\fBset_robust_list\fP(2) 2.6.17
30fa088c 471\fBset_thread_area\fP(2) 2.6
09de4bf1 472\fBset_tid_address\fP(2) 2.6
9947a8d7
MK
473.\" See http://lkml.org/lkml/2005/8/1/83
474.\" "[PATCH] remove sys_set_zone_reclaim()"
8717e79e 475\fBsetdomainname\fP(2) 1.0
dc2f5549 476\fBsetfsgid\fP(2) 1.2
09de4bf1 477\fBsetfsgid32\fP(2) 2.4
dc2f5549 478\fBsetfsuid\fP(2) 1.2
09de4bf1 479\fBsetfsuid32\fP(2) 2.4
8717e79e 480\fBsetgid\fP(2) 1.0
09de4bf1 481\fBsetgid32\fP(2) 2.4
8717e79e 482\fBsetgroups\fP(2) 1.0
09de4bf1 483\fBsetgroups32\fP(2) 2.4
8717e79e
MK
484\fBsethostname\fP(2) 1.0
485\fBsetitimer\fP(2) 1.0
3e55b0bd 486\fBsetns\fP(2) 3.0
8717e79e
MK
487\fBsetpgid\fP(2) 1.0
488\fBsetpriority\fP(2) 1.0
489\fBsetregid\fP(2) 1.0
09de4bf1
MK
490\fBsetregid32\fP(2) 2.4
491\fBsetresgid\fP(2) 2.2
492\fBsetresgid32\fP(2) 2.4
493\fBsetresuid\fP(2) 2.2
494\fBsetresuid32\fP(2) 2.4
8717e79e 495\fBsetreuid\fP(2) 1.0
09de4bf1 496\fBsetreuid32\fP(2) 2.4
8717e79e
MK
497\fBsetrlimit\fP(2) 1.0
498\fBsetsid\fP(2) 1.0
499\fBsetsockopt\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
500\fBsettimeofday\fP(2) 1.0
501\fBsetuid\fP(2) 1.0
09de4bf1
MK
502\fBsetuid32\fP(2) 2.4
503\fBsetup\fP(2) Removed in 2.2
504\fBsetxattr\fP(2) 2.6; 2.4.18
8717e79e
MK
505\fBsgetmask\fP(2) 1.0
506\fBshmat\fP(2) 2.0 See notes on \fBipc\fP(2)
507\fBshmctl\fP(2) 2.0 See notes on \fBipc\fP(2)
508\fBshmdt\fP(2) 2.0 See notes on \fBipc\fP(2)
509\fBshmget\fP(2) 2.0 See notes on \fBipc\fP(2)
510\fBshutdown\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
511\fBsigaction\fP(2) 1.0
09de4bf1 512\fBsigaltstack\fP(2) 2.2
8717e79e 513\fBsignal\fP(2) 1.0
09de4bf1 514\fBsignalfd\fP(2) 2.6.22
eb153420 515\fBsignalfd4\fP(2) 2.6.27
8717e79e
MK
516\fBsigpending\fP(2) 1.0
517\fBsigprocmask\fP(2) 1.0
518\fBsigreturn\fP(2) 1.0
519\fBsigsuspend\fP(2) 1.0
520\fBsocket\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
521\fBsocketcall\fP(2) 1.0
7d50a840 522.\" Implements BSD socket calls
8717e79e 523\fBsocketpair\fP(2) 2.0 See notes on \fBsocketcall\fP(2)
09de4bf1 524\fBsplice\fP(2) 2.6.17
f9e4d811
MK
525\fBspu_create\fP(2) 2.6.16 PowerPC only
526\fBspu_run\fP(2) 2.6.16 PowerPC only
8717e79e
MK
527\fBssetmask\fP(2) 1.0
528\fBstat\fP(2) 1.0
09de4bf1 529\fBstat64\fP(2) 2.4
8717e79e 530\fBstatfs\fP(2) 1.0
09de4bf1 531\fBstatfs64\fP(2) 2.6
8717e79e 532\fBstime\fP(2) 1.0
56f2caff
BIG
533\fBsubpage_prot\fP(2) 2.6.25 PowerPC if
534 CONFIG_PPC_64K_PAGES
8717e79e
MK
535\fBswapoff\fP(2) 1.0
536\fBswapon\fP(2) 1.0
537\fBsymlink\fP(2) 1.0
09de4bf1 538\fBsymlinkat\fP(2) 2.6.16
8717e79e 539\fBsync\fP(2) 1.0
09de4bf1 540\fBsync_file_range\fP(2) 2.6.17
56f2caff 541\fBsync_file_range2\fP(2) 2.6.22 T{
b6bc918e
MK
542Architecture-specific
543variant of \fBsync_file_range\fP(2)
56f2caff 544T}
83225c1f
MK
545.\" PowerPC, ARM, tile
546.\" First appeared on ARM, as arm_sync_file_range(), but later renamed
af4c9a82 547.\" \fBsys_debug_setcontext\fP(2) ??? PowerPC if CONFIG_PPC32
dc43a891 548\fBsyncfs\fP(2) 2.6.39
dc2f5549 549\fBsysfs\fP(2) 1.2
8717e79e
MK
550\fBsysinfo\fP(2) 1.0
551\fBsyslog\fP(2) 1.0
7d50a840 552.\" glibc interface is \fBklogctl\fP(3)
09de4bf1
MK
553\fBtee\fP(2) 2.6.17
554\fBtgkill\fP(2) 2.6
8717e79e 555\fBtime\fP(2) 1.0
09de4bf1
MK
556\fBtimer_create\fP(2) 2.6
557\fBtimer_delete\fP(2) 2.6
558\fBtimer_getoverrun\fP(2) 2.6
559\fBtimer_gettime\fP(2) 2.6
560\fBtimer_settime\fP(2) 2.6
0df29603
MK
561\fBtimerfd_create\fP(2) 2.6.25
562\fBtimerfd_gettime\fP(2) 2.6.25
563\fBtimerfd_settime\fP(2) 2.6.25
8717e79e 564\fBtimes\fP(2) 1.0
09de4bf1 565\fBtkill\fP(2) 2.6; 2.4.22
8717e79e 566\fBtruncate\fP(2) 1.0
09de4bf1
MK
567\fBtruncate64\fP(2) 2.4
568\fBugetrlimit\fP(2) 2.4
8717e79e
MK
569\fBumask\fP(2) 1.0
570\fBumount\fP(2) 1.0
09de4bf1
MK
571.\" sys_oldumount() -- __NR_umount
572\fBumount2\fP(2) 2.2
573.\" sys_umount() -- __NR_umount2
8717e79e
MK
574\fBuname\fP(2) 1.0
575\fBunlink\fP(2) 1.0
09de4bf1
MK
576\fBunlinkat\fP(2) 2.6.16
577\fBunshare\fP(2) 2.6.16
8717e79e
MK
578\fBuselib\fP(2) 1.0
579\fBustat\fP(2) 1.0
580\fButime\fP(2) 1.0
09de4bf1 581\fButimensat\fP(2) 2.6.22
d3ea5e99 582\fButimes\fP(2) 2.2
823c799b 583\fButrap_install\fP(2) 2.2 Sparc
8717e79e
MK
584\fBvfork\fP(2) 2.2
585\fBvhangup\fP(2) 1.0
b6bc918e
MK
586\fBvm86old\fP(2) 1.0 T{
587Was "vm86"; renamed in
5882.0.28/2.2
589T}
8717e79e 590\fBvm86\fP(2) 2.0.28; 2.2
09de4bf1 591\fBvmsplice\fP(2) 2.6.17
8717e79e 592\fBwait4\fP(2) 1.0
09de4bf1 593\fBwaitid\fP(2) 2.6.10
8717e79e
MK
594\fBwaitpid\fP(2) 1.0
595\fBwrite\fP(2) 1.0
dc2f5549 596\fBwritev\fP(2) 2.0
09de4bf1 597.TE
56f2caff 598.ad
09de4bf1 599.PP
929f1ff7 600On many platforms, including x86-32, socket calls are all multiplexed
7d50a840
MK
601(via glibc wrapper functions) through
602.BR socketcall (2)
603and similarly System V IPC calls are multiplexed through
604.BR ipc (2).
0597933f 605
09de4bf1 606Although slots are reserved for them in the system call table,
e0bf9127 607the following system calls are not implemented in the standard kernel:
09de4bf1
MK
608.BR afs_syscall (2), \" __NR_afs_syscall is 53 on Linux 2.6.22/i386
609.BR break (2), \" __NR_break is 17 on Linux 2.6.22/i386
610.BR ftime (2), \" __NR_ftime is 35 on Linux 2.6.22/i386
611.BR getpmsg (2), \" __NR_getpmsg is 188 on Linux 2.6.22/i386
612.BR gtty (2), \" __NR_gtty is 32 on Linux 2.6.22/i386
613.BR idle (2), \" __NR_idle is 112 on Linux 2.6.22/i386
614.BR lock (2), \" __NR_lock is 53 on Linux 2.6.22/i386
615.BR madvise1 (2), \" __NR_madvise1 is 219 on Linux 2.6.22/i386
616.BR mpx (2), \" __NR_mpx is 66 on Linux 2.6.22/i386
3b777aff 617.BR phys (2), \" Slot has been reused
09de4bf1
MK
618.BR prof (2), \" __NR_prof is 44 on Linux 2.6.22/i386
619.BR profil (2), \" __NR_profil is 98 on Linux 2.6.22/i386
620.BR putpmsg (2), \" __NR_putpmsg is 189 on Linux 2.6.22/i386
f9e4d811
MK
621.\" __NR_security is 223 on Linux 2.4/i386; absent on 2.6/i386, present
622.\" on a couple of 2.6 architectures
623.BR security (2), \" __NR_security is 223 on Linux 2.4/i386
0597933f 624.\" The security call is for future use.
09de4bf1 625.BR stty (2), \" __NR_stty is 31 on Linux 2.6.22/i386
af4c9a82 626.BR tuxcall (2), \" __NR_tuxcall is 184 on x86_64, also on PPC and alpha
09de4bf1
MK
627.BR ulimit (2), \" __NR_ulimit is 58 on Linux 2.6.22/i386
628and
629.BR vserver (2) \" __NR_vserver is 273 on Linux 2.6.22/i386
fea681da 630(see also
fea681da
MK
631.BR unimplemented (2)).
632However,
633.BR ftime (3),
634.BR profil (3)
635and
636.BR ulimit (3)
637exist as library routines.
09de4bf1
MK
638The slot for
639.BR phys (2)
640is in use since kernel 2.1.116 for
641.BR umount (2);
e0bf9127 642.BR phys (2)
09de4bf1 643will never be implemented.
09de4bf1
MK
644The
645.BR getpmsg (2)
646and
647.BR putpmsg (2)
648calls are for kernels patched to support STREAMS,
649and may never be in the standard kernel.
98309d3f
MK
650
651There was briefly
652.BR set_zone_reclaim (2),
653added in Linux 2.6.13, and removed in 2.6.16;
7fac88a9 654this system call was never available to user space.
0597933f 655.SH NOTES
09de4bf1 656.PP
fea681da
MK
657Roughly speaking, the code belonging to the system call
658with number __NR_xxx defined in
659.I /usr/include/asm/unistd.h
66a9882e 660can be found in the Linux kernel source in the routine
63aa9df0 661.IR sys_xxx ().
fea681da
MK
662(The dispatch table for i386 can be found in
663.IR /usr/src/linux/arch/i386/kernel/entry.S .)
664There are many exceptions, however, mostly because
665older system calls were superseded by newer ones,
c13182ef
MK
666and this has been treated somewhat unsystematically.
667On platforms with
6c1544c1 668proprietary operating-system emulation,
a797afac 669such as parisc, sparc, sparc64, and alpha,
fea681da
MK
670there are many additional system calls; mips64 also contains a full
671set of 32-bit system calls.
fea681da 672
09de4bf1
MK
673Over time, changes to the interfaces of some system calls have been
674necessary.
675One reason for such changes was the need to increase the size of
676structures or scalar values passed to the system call.
7d50a840
MK
677Because of these changes, there are now various groups
678of related system calls
679(e.g.,
680.BR truncate (2)
681and
e04e8187 682.BR truncate64 (2))
7d50a840
MK
683which perform similar tasks, but which vary in
684details such as the size of their arguments.
685(As noted earlier, applications are generally unaware of this:
686the glibc wrapper functions do some work to ensure that the right
687system call is invoked, and that ABI compatibility is
688preserved for old binaries.)
09de4bf1
MK
689Examples of systems calls that exist in multiple versions are
690the following:
691.IP * 3
7d50a840 692By now there are three different versions of
09de4bf1
MK
693.BR stat (2):
694.IR sys_stat ()
695(slot
696.IR __NR_oldstat ),
697.IR sys_newstat ()
698(slot
699.IR __NR_stat ),
fea681da 700and
92a5f983 701.IR sys_stat64 ()
09de4bf1
MK
702(slot
703.IR __NR_stat64 ),
704with the last being the most current.
f9e4d811 705.\" e.g., on 2.6.22/i386: __NR_oldstat 18, __NR_stat 106, __NR_stat64 195
09de4bf1
MK
706.\" The stat system calls deal with three different data structures,
707.\" defined in include/asm-i386/stat.h: __old_kernel_stat, stat, stat64
708A similar story applies for
709.BR lstat (2)
710and
711.BR fstat (2).
712.IP *
713Similarly, the defines
714.IR __NR_oldolduname ,
715.IR __NR_olduname ,
716and
0daa9e92 717.I __NR_uname
09de4bf1
MK
718refer to the routines
719.IR sys_olduname (),
720.IR sys_uname ()
721and
722.IR sys_newuname ().
723.IP *
7d50a840 724In Linux 2.0, a new version of
09de4bf1
MK
725.BR vm86 (2)
726appeared, with the old and the new kernel routines being named
727.IR sys_vm86old ()
728and
729.IR sys_vm86 ().
730.IP *
7d50a840 731In Linux 2.4, a new version of
09de4bf1
MK
732.BR getrlimit (2)
733appeared, with the old and the new kernel routines being named
734.IR sys_old_getrlimit ()
735(slot
736.IR __NR_getrlimit )
737and
738.IR sys_getrlimit ()
739(slot
740.IR __NR_ugetrlimit ).
741.IP *
742Linux 2.4 increased the size of user and group IDs from 16 to 32 bits.
5024580d 743.\" 64-bit off_t changes: ftruncate64, *stat64,
09de4bf1
MK
744.\" fcntl64 (because of the flock structure), getdents64, *statfs64
745To support this change, a range of system calls were added
746(e.g.,
747.BR chown32 (2),
748.BR getuid32 (2),
749.BR getgroups32 (2),
750.BR setresuid32 (2)),
751superseding earlier calls of the same name without the
752"32" suffix.
753.IP *
754Linux 2.4 added support for applications on 32-bit architectures
755to access large files (i.e., files for which the sizes and
756file offsets can't be represented in 32 bits.)
757To support this change, replacements were required for system calls
758that deal with file offsets and sizes.
759Thus the following system calls were added:
760.BR fcntl64 (2),
761.BR ftruncate64 (2),
762.BR getdents64 (2),
763.BR stat64 (2),
764.BR statfs64 (2),
765and their analogs that work with file descriptors or
766symbolic links.
767These system calls supersede the older system calls
768which, except in the case of the "stat" calls,
769have the same name without the "64" suffix.
ca92ce95 770
09de4bf1
MK
771On newer platforms that only have 64-bit file access and 32-bit uids
772(e.g., alpha, ia64, s390x) there are no *64 or *32 calls.
773Where the *64 and *32 calls exist, the other versions are obsolete.
774.IP *
775The
776.I rt_sig*
777calls were added in kernel 2.2 to support the addition
778of real-time signals (see
779.BR signal (7)).
780These system calls supersede the older system calls of the same
781name without the "rt_" prefix.
782.IP *
7d50a840
MK
783The
784.BR select (2)
fea681da 785and
7d50a840 786.BR mmap (2)
c4bb193f 787system calls use five or more arguments,
208088b5 788which caused problems in the way
c4bb193f 789argument passing on the i386 used to be set up.
7d50a840 790Thus, while other architectures have
09de4bf1
MK
791.IR sys_select ()
792and
793.IR sys_mmap ()
794corresponding to
0daa9e92 795.I __NR_select
09de4bf1
MK
796and
797.IR __NR_mmap ,
798on i386 one finds
799.IR old_select ()
800and
801.IR old_mmap ()
802(routines that use a pointer to a
c4bb193f
MK
803argument block) instead.
804These days passing five arguments
09de4bf1 805is not a problem any more, and there is a
0daa9e92 806.I __NR__newselect
7d50a840
MK
807.\" (used by libc 6)
808that corresponds directly to
09de4bf1
MK
809.IR sys_select ()
810and similarly
7d50a840
MK
811.IR __NR_mmap2 .
812.\" .PP
813.\" Two system call numbers,
814.\" .IR __NR__llseek
815.\" and
816.\" .IR __NR__sysctl
817.\" have an additional underscore absent in
818.\" .IR sys_llseek ()
819.\" and
820.\" .IR sys_sysctl ().
e0bf9127 821.\"
7d50a840
MK
822.\" In kernel 2.1.81,
823.\" .BR lchown (2)
e0bf9127 824.\" and
7d50a840
MK
825.\" .BR chown (2)
826.\" were swapped; that is,
827.\" .BR lchown (2)
828.\" was added with the semantics that were then current for
829.\" .BR chown (2),
830.\" and the semantics of the latter call were changed to what
831.\" they are today.
09de4bf1 832.SH SEE ALSO
b73bf0ae 833.BR intro (2),
09de4bf1 834.BR syscall (2),
de9ed3a3 835.BR unimplemented (2),
951ae9c0
MF
836.BR libc (7),
837.BR vdso (7)