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