1SYSCALLS(2)                Linux Programmer's Manual               SYSCALLS(2)
2
3
4

NAME

6       syscalls - Linux system calls
7

SYNOPSIS

9       Linux system calls.
10

DESCRIPTION

12       The system call is the fundamental interface between an application and
13       the Linux kernel.
14
15   System calls and library wrapper functions
16       System calls are generally not invoked directly, but rather via wrapper
17       functions  in  glibc  (or  perhaps some other library).  For details of
18       direct invocation of a system  call,  see  intro(2).   Often,  but  not
19       always, the name of the wrapper function is the same as the name of the
20       system call that it invokes.  For example, glibc  contains  a  function
21       chdir() which invokes the underlying "chdir" system call.
22
23       Often the glibc wrapper function is quite thin, doing little work other
24       than copying arguments to the right registers before invoking the  sys‐
25       tem  call,  and  then setting errno appropriately after the system call
26       has returned.   (These  are  the  same  steps  that  are  performed  by
27       syscall(2), which can be used to invoke system calls for which no wrap‐
28       per function is provided.)  Note: system calls indicate  a  failure  by
29       returning  a negative error number to the caller on architectures with‐
30       out a separate error register/flag, as noted in syscall(2);  when  this
31       happens,  the  wrapper  function  negates the returned error number (to
32       make it positive), copies it to errno, and returns -1 to the caller  of
33       the wrapper.
34
35       Sometimes,  however,  the  wrapper function does some extra work before
36       invoking the system call.  For example, nowadays there are (for reasons
37       described  below)  two  related  system  calls,  truncate(2)  and trun‐
38       cate64(2), and the glibc truncate() wrapper function  checks  which  of
39       those  system  calls  are  provided  by the kernel and determines which
40       should be employed.
41
42   System call list
43       Below is a list of the Linux system calls.  In  the  list,  the  Kernel
44       column  indicates  the  kernel version for those system calls that were
45       new in Linux 2.2, or have appeared since that kernel version.  Note the
46       following points:
47
48       *  Where  no  kernel  version is indicated, the system call appeared in
49          kernel 1.0 or earlier.
50
51       *  Where a system call is marked "1.2" this means the system call prob‐
52          ably  appeared  in  a  1.1.x kernel version, and first appeared in a
53          stable kernel with 1.2.  (Development of the 1.2 kernel  was  initi‐
54          ated  from  a  branch  of kernel 1.0.6 via the 1.1.x unstable kernel
55          series.)
56
57       *  Where a system call is marked "2.0" this means the system call prob‐
58          ably  appeared  in  a  1.3.x kernel version, and first appeared in a
59          stable kernel with 2.0.  (Development of the 2.0 kernel  was  initi‐
60          ated from a branch of kernel 1.2.x, somewhere around 1.2.10, via the
61          1.3.x unstable kernel series.)
62
63       *  Where a system call is marked "2.2" this means the system call prob‐
64          ably  appeared  in  a  2.1.x kernel version, and first appeared in a
65          stable kernel with 2.2.0.  (Development of the 2.2 kernel was initi‐
66          ated  from  a  branch of kernel 2.0.21 via the 2.1.x unstable kernel
67          series.)
68
69       *  Where a system call is marked "2.4" this means the system call prob‐
70          ably  appeared  in  a  2.3.x kernel version, and first appeared in a
71          stable kernel with 2.4.0.  (Development of the 2.4 kernel was initi‐
72          ated  from  a  branch  of kernel 2.2.8 via the 2.3.x unstable kernel
73          series.)
74
75       *  Where a system call is marked "2.6" this means the system call prob‐
76          ably  appeared  in  a  2.5.x kernel version, and first appeared in a
77          stable kernel with 2.6.0.  (Development of kernel 2.6 was  initiated
78          from  a  branch  of  kernel  2.4.15  via  the  2.5.x unstable kernel
79          series.)
80
81       *  Starting with kernel 2.6.0, the development model changed,  and  new
82          system  calls  may  appear in each 2.6.x release.  In this case, the
83          exact version number where the system call appeared is shown.   This
84          convention  continues  with the 3.x kernel series, which followed on
85          from kernel 2.6.39, and the 4.x kernel  series,  which  followed  on
86          from kernel 3.19.
87
88       *  In  some  cases,  a  system call was added to a stable kernel series
89          after it branched from the previous stable kernel series,  and  then
90          backported  into the earlier stable kernel series.  For example some
91          system calls that appeared in 2.6.x  were  also  backported  into  a
92          2.4.x  release after 2.4.15.  When this is so, the version where the
93          system call appeared in both of the major kernel series is listed.
94
95       The list of system calls that are available as at kernel 4.19 (or in  a
96       few cases only on older kernels) is as follows:
97
98       System call                Kernel        Notes
99       ───────────────────────────────────────────────────────────────────────
100
101       _llseek(2)                 1.2
102       _newselect(2)              2.0
103       _sysctl(2)                 2.0
104       accept(2)                  2.0           See notes on socketcall(2)
105       accept4(2)                 2.6.28
106       access(2)                  1.0
107       acct(2)                    1.0
108       add_key(2)                 2.6.10
109       adjtimex(2)                1.0
110       alarm(2)                   1.0
111       alloc_hugepages(2)         2.5.36        Removed in 2.5.44
112       arc_gettls(2)              3.9           ARC only
113       arc_settls(2)              3.9           ARC only
114       arc_usr_cmpxchg(2)         4.9           ARC only
115       arch_prctl(2)              2.6           x86_64, x86 since 4.12
116       atomic_barrier(2)          2.6.34        m68k only
117       atomic_cmpxchg_32(2)       2.6.34        m68k only
118       bdflush(2)                 1.2           Deprecated (does nothing)
119                                                since 2.6
120       bfin_spinlock(2)           2.6.22        Blackfin only (port removed
121                                                in Linux 4.17)
122       bind(2)                    2.0           See notes on socketcall(2)
123       bpf(2)                     3.18
124       brk(2)                     1.0
125       breakpoint(2)              2.2           ARM OABI only, defined with
126                                                __ARM_NR prefix
127       cacheflush(2)              1.2           Not on x86
128       capget(2)                  2.2
129       capset(2)                  2.2
130       chdir(2)                   1.0
131       chmod(2)                   1.0
132
133       chown(2)                   2.2           See chown(2) for
134                                                version details
135       chown32(2)                 2.4
136       chroot(2)                  1.0
137       clock_adjtime(2)           2.6.39
138       clock_getres(2)            2.6
139       clock_gettime(2)           2.6
140       clock_nanosleep(2)         2.6
141       clock_settime(2)           2.6
142       clone2(2)                  2.4           IA-64 only
143       clone(2)                   1.0
144       clone3(2)                  5.3
145       close(2)                   1.0
146       cmpxchg_badaddr(2)         2.6.36        Tile only (port removed
147                                                in Linux 4.17)
148       connect(2)                 2.0           See notes on socketcall(2)
149       copy_file_range(2)         4.5
150       creat(2)                   1.0
151       create_module(2)           1.0           Removed in 2.6
152       delete_module(2)           1.0
153       dma_memcpy(2)              2.6.22        Blackfin only (port removed
154                                                in Linux 4.17)
155       dup(2)                     1.0
156       dup2(2)                    1.0
157       dup3(2)                    2.6.27
158       epoll_create(2)            2.6
159       epoll_create1(2)           2.6.27
160       epoll_ctl(2)               2.6
161       epoll_pwait(2)             2.6.19
162       epoll_wait(2)              2.6
163       eventfd(2)                 2.6.22
164       eventfd2(2)                2.6.27
165       execv(2)                   2.0           SPARC/SPARC64 only, for
166                                                compatibility with SunOS
167       execve(2)                  1.0
168       execveat(2)                3.19
169       exit(2)                    1.0
170       exit_group(2)              2.6
171       faccessat(2)               2.6.16
172       fadvise64(2)               2.6
173       fadvise64_64(2)            2.6
174       fallocate(2)               2.6.23
175       fanotify_init(2)           2.6.37
176       fanotify_mark(2)           2.6.37
177       fchdir(2)                  1.0
178       fchmod(2)                  1.0
179       fchmodat(2)                2.6.16
180       fchown(2)                  1.0
181       fchown32(2)                2.4
182       fchownat(2)                2.6.16
183       fcntl(2)                   1.0
184       fcntl64(2)                 2.4
185       fdatasync(2)               2.0
186       fgetxattr(2)               2.6; 2.4.18
187       finit_module(2)            3.8
188       flistxattr(2)              2.6; 2.4.18
189       flock(2)                   2.0
190       fork(2)                    1.0
191       free_hugepages(2)          2.5.36        Removed in 2.5.44
192       fremovexattr(2)            2.6; 2.4.18
193       fsconfig(2)                5.2
194       fsetxattr(2)               2.6; 2.4.18
195       fsmount(2)                 5.2
196       fsopen(2)                  5.2
197       fspick(2)                  5.2
198
199       fstat(2)                   1.0
200       fstat64(2)                 2.4
201       fstatat64(2)               2.6.16
202       fstatfs(2)                 1.0
203       fstatfs64(2)               2.6
204       fsync(2)                   1.0
205       ftruncate(2)               1.0
206       ftruncate64(2)             2.4
207       futex(2)                   2.6
208       futimesat(2)               2.6.16
209       get_kernel_syms(2)         1.0           Removed in 2.6
210       get_mempolicy(2)           2.6.6
211       get_robust_list(2)         2.6.17
212       get_thread_area(2)         2.6
213       get_tls(2)                 4.15          ARM OABI only, has
214                                                __ARM_NR prefix
215       getcpu(2)                  2.6.19
216       getcwd(2)                  2.2
217       getdents(2)                2.0
218       getdents64(2)              2.4
219       getdomainname(2)           2.2           SPARC, SPARC64; available
220                                                as osf_getdomainname(2)
221                                                on Alpha since Linux 2.0
222       getdtablesize(2)           2.0           SPARC (removed in 2.6.26),
223                                                available since Linux 2.0 on
224                                                Alpha as osf_getdtablesize(2)
225       getegid(2)                 1.0
226       getegid32(2)               2.4
227       geteuid(2)                 1.0
228       geteuid32(2)               2.4
229       getgid(2)                  1.0
230       getgid32(2)                2.4
231       getgroups(2)               1.0
232       getgroups32(2)             2.4
233       gethostname(2)             2.0           Alpha, was available on
234                                                SPARC up to Linux 2.6.26
235       getitimer(2)               1.0
236       getpeername(2)             2.0           See notes on socketcall(2)
237       getpagesize(2)             2.0           Not on x86
238       getpgid(2)                 1.0
239       getpgrp(2)                 1.0
240       getpid(2)                  1.0
241       getppid(2)                 1.0
242       getpriority(2)             1.0
243       getrandom(2)               3.17
244       getresgid(2)               2.2
245       getresgid32(2)             2.4
246       getresuid(2)               2.2
247       getresuid32(2)             2.4
248       getrlimit(2)               1.0
249       getrusage(2)               1.0
250       getsid(2)                  2.0
251       getsockname(2)             2.0           See notes on socketcall(2)
252       getsockopt(2)              2.0           See notes on socketcall(2)
253       gettid(2)                  2.4.11
254       gettimeofday(2)            1.0
255       getuid(2)                  1.0
256       getuid32(2)                2.4
257       getunwind(2)               2.4.8         IA-64 only; deprecated
258       getxattr(2)                2.6; 2.4.18
259       getxgid(2)                 2.0           Alpha only; see NOTES
260       getxpid(2)                 2.0           Alpha only; see NOTES
261       getxuid(2)                 2.0           Alpha only; see NOTES
262       init_module(2)             1.0
263       inotify_add_watch(2)       2.6.13
264
265       inotify_init(2)            2.6.13
266       inotify_init1(2)           2.6.27
267       inotify_rm_watch(2)        2.6.13
268       io_cancel(2)               2.6
269       io_destroy(2)              2.6
270       io_getevents(2)            2.6
271       io_pgetevents(2)           4.18
272       io_setup(2)                2.6
273       io_submit(2)               2.6
274       io_uring_enter(2)          5.1
275       io_uring_register(2)       5.1
276       io_uring_setup(2)          5.1
277       ioctl(2)                   1.0
278       ioperm(2)                  1.0
279       iopl(2)                    1.0
280       ioprio_get(2)              2.6.13
281       ioprio_set(2)              2.6.13
282       ipc(2)                     1.0
283       kcmp(2)                    3.5
284       kern_features(2)           3.7           SPARC64 only
285       kexec_file_load(2)         3.17
286       kexec_load(2)              2.6.13
287       keyctl(2)                  2.6.10
288       kill(2)                    1.0
289       lchown(2)                  1.0           See chown(2) for
290                                                version details
291       lchown32(2)                2.4
292       lgetxattr(2)               2.6; 2.4.18
293       link(2)                    1.0
294       linkat(2)                  2.6.16
295       listen(2)                  2.0           See notes on socketcall(2)
296       listxattr(2)               2.6; 2.4.18
297       llistxattr(2)              2.6; 2.4.18
298       lookup_dcookie(2)          2.6
299       lremovexattr(2)            2.6; 2.4.18
300       lseek(2)                   1.0
301       lsetxattr(2)               2.6; 2.4.18
302       lstat(2)                   1.0
303       lstat64(2)                 2.4
304       madvise(2)                 2.4
305       mbind(2)                   2.6.6
306       memory_ordering(2)         2.2           SPARC64 only
307       metag_get_tls(2)           3.9           Metag only (port removed
308                                                in Linux 4.17)
309       metag_set_fpu_flags(2)     3.9           Metag only (port removed
310                                                in Linux 4.17)
311       metag_set_tls(2)           3.9           Metag only (port removed
312                                                in Linux 4.17)
313       metag_setglobalbit(2)      3.9           Metag only (port removed
314                                                in Linux 4.17)
315       membarrier(2)              3.17
316       memfd_create(2)            3.17
317       migrate_pages(2)           2.6.16
318       mincore(2)                 2.4
319       mkdir(2)                   1.0
320       mkdirat(2)                 2.6.16
321       mknod(2)                   1.0
322       mknodat(2)                 2.6.16
323       mlock(2)                   2.0
324       mlock2(2)                  4.4
325       mlockall(2)                2.0
326       mmap(2)                    1.0
327       mmap2(2)                   2.4
328       modify_ldt(2)              1.0
329       mount(2)                   1.0
330
331       move_mount(2)              5.2
332       move_pages(2)              2.6.18
333       mprotect(2)                1.0
334       mq_getsetattr(2)           2.6.6
335       mq_notify(2)               2.6.6
336       mq_open(2)                 2.6.6
337       mq_timedreceive(2)         2.6.6
338       mq_timedsend(2)            2.6.6
339       mq_unlink(2)               2.6.6
340       mremap(2)                  2.0
341       msgctl(2)                  2.0           See notes on ipc(2)
342       msgget(2)                  2.0           See notes on ipc(2)
343       msgrcv(2)                  2.0           See notes on ipc(2)
344       msgsnd(2)                  2.0           See notes on ipc(2)
345       msync(2)                   2.0
346       munlock(2)                 2.0
347       munlockall(2)              2.0
348       munmap(2)                  1.0
349       name_to_handle_at(2)       2.6.39
350       nanosleep(2)               2.0
351       newfstatat(2)              2.6.16        See stat(2)
352       nfsservctl(2)              2.2           Removed in 3.1
353       nice(2)                    1.0
354       old_adjtimex(2)            2.0           Alpha only; see NOTES
355       old_getrlimit(2)           2.4           Old variant of getrlimit(2)
356                                                that used a different value
357                                                for RLIM_INFINITY
358       oldfstat(2)                1.0
359       oldlstat(2)                1.0
360       oldolduname(2)             1.0
361       oldstat(2)                 1.0
362       oldumount(2)               2.4.116       Name of the old umount(2)
363                                                syscall on Alpha
364       olduname(2)                1.0
365       open(2)                    1.0
366       open_by_handle_at(2)       2.6.39
367       open_tree(2)               5.2
368       openat(2)                  2.6.16
369       or1k_atomic(2)             3.1           OpenRISC 1000 only
370       pause(2)                   1.0
371       pciconfig_iobase(2)        2.2.15; 2.4   Not on x86
372       pciconfig_read(2)          2.0.26; 2.2   Not on x86
373       pciconfig_write(2)         2.0.26; 2.2   Not on x86
374       perf_event_open(2)         2.6.31        Was perf_counter_open() in
375                                                2.6.31; renamed in 2.6.32
376       personality(2)             1.2
377       perfctr(2)                 2.2           SPARC only; removed in 2.6.34
378       perfmonctl(2)              2.4           IA-64 only
379       pidfd_send_signal(2)       5.1
380       pidfd_open(2)              5.3
381       pipe(2)                    1.0
382       pipe2(2)                   2.6.27
383       pivot_root(2)              2.4
384       pkey_alloc(2)              4.8
385       pkey_free(2)               4.8
386       pkey_mprotect(2)           4.8
387       poll(2)                    2.0.36; 2.2
388       ppoll(2)                   2.6.16
389       prctl(2)                   2.2
390       pread(2)                                 Used for pread64(2) on AVR32
391                                                (port removed in Linux 4.12)
392                                                and Blackfin (port removed
393                                                in Linux 4.17)
394       pread64(2)                               Added as "pread" in 2.2;
395                                                renamed "pread64" in 2.6
396
397       preadv(2)                  2.6.30
398       preadv2(2)                 4.6
399       prlimit64(2)               2.6.36
400       process_vm_readv(2)        3.2
401       process_vm_writev(2)       3.2
402       pselect6(2)                2.6.16
403       ptrace(2)                  1.0
404       pwrite(2)                                Used for pwrite64(2) on AVR32
405                                                (port removed in Linux 4.12)
406                                                and Blackfin (port removed in
407                                                Linux 4.17)
408       pwrite64(2)                              Added as "pwrite" in 2.2;
409                                                renamed "pwrite64" in 2.6
410       pwritev(2)                 2.6.30
411       pwritev2(2)                4.6
412       query_module(2)            2.2           Removed in 2.6
413       quotactl(2)                1.0
414       read(2)                    1.0
415       readahead(2)               2.4.13
416       readdir(2)                 1.0
417       readlink(2)                1.0
418       readlinkat(2)              2.6.16
419       readv(2)                   2.0
420       reboot(2)                  1.0
421       recv(2)                    2.0           See notes on socketcall(2)
422       recvfrom(2)                2.0           See notes on socketcall(2)
423       recvmsg(2)                 2.0           See notes on socketcall(2)
424       recvmmsg(2)                2.6.33
425       remap_file_pages(2)        2.6           Deprecated since 3.16
426       removexattr(2)             2.6; 2.4.18
427       rename(2)                  1.0
428       renameat(2)                2.6.16
429       renameat2(2)               3.15
430       request_key(2)             2.6.10
431       restart_syscall(2)         2.6
432       riscv_flush_icache(2)      4.15          RISC-V only
433       rmdir(2)                   1.0
434       rseq(2)                    4.18
435       rt_sigaction(2)            2.2
436       rt_sigpending(2)           2.2
437       rt_sigprocmask(2)          2.2
438       rt_sigqueueinfo(2)         2.2
439       rt_sigreturn(2)            2.2
440       rt_sigsuspend(2)           2.2
441       rt_sigtimedwait(2)         2.2
442       rt_tgsigqueueinfo(2)       2.6.31
443       rtas(2)                    2.6.2         PowerPC/PowerPC64 only
444       s390_runtime_instr(2)      3.7           s390 only
445       s390_pci_mmio_read(2)      3.19          s390 only
446       s390_pci_mmio_write(2)     3.19          s390 only
447       s390_sthyi(2)              4.15          s390 only
448       s390_guarded_storage(2)    4.12          s390 only
449       sched_get_affinity(2)      2.6           Name of sched_getaffinity(2)
450                                                on SPARC and SPARC64
451       sched_get_priority_max(2)  2.0
452       sched_get_priority_min(2)  2.0
453       sched_getaffinity(2)       2.6
454       sched_getattr(2)           3.14
455       sched_getparam(2)          2.0
456       sched_getscheduler(2)      2.0
457       sched_rr_get_interval(2)   2.0
458       sched_set_affinity(2)      2.6           Name of sched_setaffinity(2)
459                                                on SPARC and SPARC64
460       sched_setaffinity(2)       2.6
461       sched_setattr(2)           3.14
462
463       sched_setparam(2)          2.0
464       sched_setscheduler(2)      2.0
465       sched_yield(2)             2.0
466       seccomp(2)                 3.17
467       select(2)                  1.0
468       semctl(2)                  2.0           See notes on ipc(2)
469       semget(2)                  2.0           See notes on ipc(2)
470       semop(2)                   2.0           See notes on ipc(2)
471       semtimedop(2)              2.6; 2.4.22
472       send(2)                    2.0           See notes on socketcall(2)
473       sendfile(2)                2.2
474       sendfile64(2)              2.6; 2.4.19
475       sendmmsg(2)                3.0
476       sendmsg(2)                 2.0           See notes on socketcall(2)
477       sendto(2)                  2.0           See notes on socketcall(2)
478       set_mempolicy(2)           2.6.6
479       set_robust_list(2)         2.6.17
480       set_thread_area(2)         2.6
481       set_tid_address(2)         2.6
482       set_tls(2)                 2.6.11        ARM OABI/EABI only (constant
483                                                has __ARM_NR prefix)
484       setdomainname(2)           1.0
485       setfsgid(2)                1.2
486       setfsgid32(2)              2.4
487       setfsuid(2)                1.2
488       setfsuid32(2)              2.4
489       setgid(2)                  1.0
490       setgid32(2)                2.4
491       setgroups(2)               1.0
492       setgroups32(2)             2.4
493       sethae(2)                  2.0           Alpha only; see NOTES
494       sethostname(2)             1.0
495       setitimer(2)               1.0
496       setns(2)                   3.0
497       setpgid(2)                 1.0
498       setpgrp(2)                 2.0           Alternative name for
499                                                setpgid(2) on Alpha
500       setpriority(2)             1.0
501       setregid(2)                1.0
502       setregid32(2)              2.4
503       setresgid(2)               2.2
504       setresgid32(2)             2.4
505       setresuid(2)               2.2
506       setresuid32(2)             2.4
507       setreuid(2)                1.0
508       setreuid32(2)              2.4
509       setrlimit(2)               1.0
510       setsid(2)                  1.0
511       setsockopt(2)              2.0           See notes on socketcall(2)
512       settimeofday(2)            1.0
513       setuid(2)                  1.0
514       setuid32(2)                2.4
515       setup(2)                   1.0           Removed in 2.2
516       setxattr(2)                2.6; 2.4.18
517       sgetmask(2)                1.0
518       shmat(2)                   2.0           See notes on ipc(2)
519       shmctl(2)                  2.0           See notes on ipc(2)
520       shmdt(2)                   2.0           See notes on ipc(2)
521       shmget(2)                  2.0           See notes on ipc(2)
522       shutdown(2)                2.0           See notes on socketcall(2)
523       sigaction(2)               1.0
524       sigaltstack(2)             2.2
525       signal(2)                  1.0
526       signalfd(2)                2.6.22
527       signalfd4(2)               2.6.27
528
529       sigpending(2)              1.0
530       sigprocmask(2)             1.0
531       sigreturn(2)               1.0
532       sigsuspend(2)              1.0
533       socket(2)                  2.0           See notes on socketcall(2)
534       socketcall(2)              1.0
535       socketpair(2)              2.0           See notes on socketcall(2)
536       spill(2)                   2.6.13        Xtensa only
537       splice(2)                  2.6.17
538       spu_create(2)              2.6.16        PowerPC/PowerPC64 only
539       spu_run(2)                 2.6.16        PowerPC/PowerPC64 only
540       sram_alloc(2)              2.6.22        Blackfin (port removed
541                                                in Linux 4.17)
542       sram_free(2)               2.6.22        Blackfin (port removed
543                                                in Linux 4.17)
544       ssetmask(2)                1.0
545       stat(2)                    1.0
546       stat64(2)                  2.4
547       statfs(2)                  1.0
548       statfs64(2)                2.6
549       statx(2)                   4.11
550       stime(2)                   1.0
551       subpage_prot(2)            2.6.25        PowerPC/PowerPC64 only
552       swapcontext(2)             2.6.3         PowerPC/PowerPC64 only
553       switch_endian(2)           4.1           PowerPC64 only
554       swapcontext(2)             2.6.3         PowerPC only
555       swapoff(2)                 1.0
556       swapon(2)                  1.0
557       symlink(2)                 1.0
558       symlinkat(2)               2.6.16
559       sync(2)                    1.0
560       sync_file_range(2)         2.6.17
561       sync_file_range2(2)        2.6.22
562       syncfs(2)                  2.6.39
563       sys_debug_setcontext(2)    2.6.11        PowerPC only
564       syscall(2)                 1.0           Still available on ARM OABI
565                                                and MIPS O32 ABI
566       sysfs(2)                   1.2
567       sysinfo(2)                 1.0
568       syslog(2)                  1.0
569       sysmips(2)                 2.6.0         MIPS only
570       tee(2)                     2.6.17
571       tgkill(2)                  2.6
572       time(2)                    1.0
573       timer_create(2)            2.6
574       timer_delete(2)            2.6
575       timer_getoverrun(2)        2.6
576       timer_gettime(2)           2.6
577       timer_settime(2)           2.6
578       timerfd_create(2)          2.6.25
579       timerfd_gettime(2)         2.6.25
580       timerfd_settime(2)         2.6.25
581       times(2)                   1.0
582       tkill(2)                   2.6; 2.4.22
583       truncate(2)                1.0
584       truncate64(2)              2.4
585       ugetrlimit(2)              2.4
586       umask(2)                   1.0
587       umount(2)                  1.0
588       umount2(2)                 2.2
589       uname(2)                   1.0
590       unlink(2)                  1.0
591       unlinkat(2)                2.6.16
592       unshare(2)                 2.6.16
593       uselib(2)                  1.0
594
595       ustat(2)                   1.0
596       userfaultfd(2)             4.3
597       usr26(2)                   2.4.8.1       ARM OABI only
598       usr32(2)                   2.4.8.1       ARM OABI only
599       utime(2)                   1.0
600       utimensat(2)               2.6.22
601       utimes(2)                  2.2
602       utrap_install(2)           2.2           SPARC64 only
603       vfork(2)                   2.2
604       vhangup(2)                 1.0
605       vm86old(2)                 1.0           Was "vm86"; renamed in
606                                                2.0.28/2.2
607       vm86(2)                    2.0.28; 2.2
608       vmsplice(2)                2.6.17
609       wait4(2)                   1.0
610       waitid(2)                  2.6.10
611       waitpid(2)                 1.0
612       write(2)                   1.0
613       writev(2)                  2.0
614       xtensa(2)                  2.6.13        Xtensa only
615
616       On many platforms, including x86-32, socket calls are  all  multiplexed
617       (via  glibc wrapper functions) through socketcall(2) and similarly Sys‐
618       tem V IPC calls are multiplexed through ipc(2).
619
620       Although slots are reserved for them in the system call table, the fol‐
621       lowing  system  calls  are  not  implemented  in  the  standard kernel:
622       afs_syscall(2),  break(2),  ftime(2),  getpmsg(2),  gtty(2),   idle(2),
623       lock(2),  madvise1(2), mpx(2), phys(2), prof(2), profil(2), putpmsg(2),
624       security(2), stty(2), tuxcall(2), ulimit(2), and vserver(2)  (see  also
625       unimplemented(2)).   However,  ftime(3), profil(3), and ulimit(3) exist
626       as library routines.  The slot for  phys(2)  is  in  use  since  kernel
627       2.1.116   for  umount(2);  phys(2)  will  never  be  implemented.   The
628       getpmsg(2) and putpmsg(2) calls are  for  kernels  patched  to  support
629       STREAMS, and may never be in the standard kernel.
630
631       There  was  briefly  set_zone_reclaim(2),  added  in  Linux 2.6.13, and
632       removed in 2.6.16; this system call was never available to user space.
633

NOTES

635       Roughly speaking, the code belonging to the  system  call  with  number
636       __NR_xxx defined in /usr/include/asm/unistd.h can be found in the Linux
637       kernel source in the routine sys_xxx().   There  are  many  exceptions,
638       however,  mostly  because  older  system calls were superseded by newer
639       ones, and this has been treated somewhat  unsystematically.   On  plat‐
640       forms  with  proprietary  operating-system  emulation,  such  as sparc,
641       sparc64, and alpha, there are many additional system calls; mips64 also
642       contains a full set of 32-bit system calls.
643
644       Over  time,  changes  to  the interfaces of some system calls have been
645       necessary.  One reason for such changes was the need  to  increase  the
646       size of structures or scalar values passed to the system call.  Because
647       of these changes, certain architectures (notably,  longstanding  32-bit
648       architectures  such  as i386) now have various groups of related system
649       calls (e.g.,  truncate(2)  and  truncate64(2))  which  perform  similar
650       tasks,  but  which vary in details such as the size of their arguments.
651       (As noted earlier, applications are  generally  unaware  of  this:  the
652       glibc  wrapper  functions  do some work to ensure that the right system
653       call is invoked, and that ABI compatibility is preserved for old  bina‐
654       ries.)   Examples  of systems calls that exist in multiple versions are
655       the following:
656
657       *  By now there are three different  versions  of  stat(2):  sys_stat()
658          (slot    __NR_oldstat),    sys_newstat()   (slot   __NR_stat),   and
659          sys_stat64() (slot __NR_stat64), with the last being the  most  cur‐
660          rent.  A similar story applies for lstat(2) and fstat(2).
661
662       *  Similarly,   the   defines   __NR_oldolduname,   __NR_olduname,  and
663          __NR_uname refer to the  routines  sys_olduname(),  sys_uname()  and
664          sys_newuname().
665
666       *  In  Linux  2.0,  a new version of vm86(2) appeared, with the old and
667          the new kernel routines being named sys_vm86old() and sys_vm86().
668
669       *  In Linux 2.4, a new version of getrlimit(2) appeared, with  the  old
670          and  the  new  kernel routines being named sys_old_getrlimit() (slot
671          __NR_getrlimit) and sys_getrlimit() (slot __NR_ugetrlimit).
672
673       *  Linux 2.4 increased the size of user and group IDs  from  16  to  32
674          bits.   To  support  this change, a range of system calls were added
675          (e.g.,  chown32(2),  getuid32(2),  getgroups32(2),  setresuid32(2)),
676          superseding earlier calls of the same name without the "32" suffix.
677
678       *  Linux  2.4 added support for applications on 32-bit architectures to
679          access large files (i.e., files for which the sizes and file offsets
680          can't  be represented in 32 bits.)  To support this change, replace‐
681          ments were required for system calls that deal with file offsets and
682          sizes.  Thus the following system calls were added: fcntl64(2), get‐
683          dents64(2), stat64(2), statfs64(2), truncate64(2), and their analogs
684          that  work  with  file  descriptors or symbolic links.  These system
685          calls supersede the older system calls which, except in the case  of
686          the "stat" calls, have the same name without the "64" suffix.
687
688          On  newer  platforms  that  only  have 64-bit file access and 32-bit
689          UIDs/GIDs (e.g., alpha, ia64, s390x, x86-64), there is just a single
690          version  of  the UID/GID and file access system calls.  On platforms
691          (typically, 32-bit platforms) where the *64 and *32 calls exist, the
692          other versions are obsolete.
693
694       *  The  rt_sig*  calls were added in kernel 2.2 to support the addition
695          of real-time signals (see signal(7)).  These system calls  supersede
696          the older system calls of the same name without the "rt_" prefix.
697
698       *  The  select(2)  and mmap(2) system calls use five or more arguments,
699          which caused problems in the way argument passing on the  i386  used
700          to be set up.  Thus, while other architectures have sys_select() and
701          sys_mmap() corresponding to __NR_select and __NR_mmap, on  i386  one
702          finds old_select() and old_mmap() (routines that use a pointer to an
703          argument block) instead.  These days passing five arguments is not a
704          problem  any  more,  and there is a __NR__newselect that corresponds
705          directly to sys_select() and similarly  __NR_mmap2.   s390x  is  the
706          only 64-bit architecture that has old_mmap().
707
708   Architecture-specific details: Alpha
709       *  getxgid(2)  returns a pair of GID and effective GID via registers r0
710          and r20; it is provided instead of getgid(2) and getegid(2).
711
712       *  getxpid(2) returns a pair of PID and parent PID via registers r0 and
713          r20; it is provided instead of getpid(2) and getppid(2).
714
715       *  old_adjtimex(2)  is  a  variant  of  adjtimex(2)  that  uses  struct
716          timeval32, for compatibility with OSF/1.
717
718       *  getxuid(2) returns a pair of GID and effective GID via registers  r0
719          and r20; it is provided instead of getuid(2) and geteuid(2).
720
721       *  sethae(2)  is used for configuring the Host Address Extension regis‐
722          ter on low-cost Alphas in order to access address space beyond first
723          27 bits.
724

SEE ALSO

726       intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7)
727

COLOPHON

729       This  page  is  part of release 5.04 of the Linux man-pages project.  A
730       description of the project, information about reporting bugs,  and  the
731       latest     version     of     this    page,    can    be    found    at
732       https://www.kernel.org/doc/man-pages/.
733
734
735
736Linux                             2019-10-10                       SYSCALLS(2)
Impressum