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

NOTES

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

SEE ALSO

730       intro(2), syscall(2), unimplemented(2), errno(3), libc(7), vdso(7)
731

COLOPHON

733       This page is part of release 5.10 of the Linux  man-pages  project.   A
734       description  of  the project, information about reporting bugs, and the
735       latest    version    of    this    page,    can     be     found     at
736       https://www.kernel.org/doc/man-pages/.
737
738
739
740Linux                             2020-12-21                       SYSCALLS(2)
Impressum